summaryrefslogtreecommitdiffstats
path: root/tools/regression
diff options
context:
space:
mode:
Diffstat (limited to 'tools/regression')
-rw-r--r--tools/regression/README88
-rw-r--r--tools/regression/TODO38
-rw-r--r--tools/regression/acct/Makefile22
-rw-r--r--tools/regression/acct/pack.c105
-rw-r--r--tools/regression/acct/regress.t30
-rw-r--r--tools/regression/aio/aiotest/Makefile9
-rw-r--r--tools/regression/aio/aiotest/aiotest.c697
-rw-r--r--tools/regression/aio/kqueue/Makefile6
-rw-r--r--tools/regression/aio/kqueue/aio_kqueue.c197
-rw-r--r--tools/regression/aio/kqueue/lio/Makefile6
-rw-r--r--tools/regression/aio/kqueue/lio/lio_kqueue.c242
-rw-r--r--tools/regression/atm/Funcs.sh53
-rw-r--r--tools/regression/atm/README17
-rw-r--r--tools/regression/atm/RunTest.sh45
-rw-r--r--tools/regression/atm/harp/atm_udp.ng155
-rw-r--r--tools/regression/atm/harp/memory_leak.sh13
-rw-r--r--tools/regression/atm/proto_cc/RunTest.sh10
-rw-r--r--tools/regression/atm/proto_sscfu/RunTest.sh11
-rw-r--r--tools/regression/atm/proto_sscop/RunTest.sh10
-rw-r--r--tools/regression/atm/proto_uni/RunTest.sh12
-rw-r--r--tools/regression/audit/audit_pipe_ioctl/Makefile9
-rw-r--r--tools/regression/audit/audit_pipe_ioctl/audit_pipe_ioctl.c143
-rw-r--r--tools/regression/bin/sh/Makefile4
-rw-r--r--tools/regression/bin/sh/builtins/alias.06
-rw-r--r--tools/regression/bin/sh/builtins/alias.0.stdout1
-rw-r--r--tools/regression/bin/sh/builtins/alias.13
-rw-r--r--tools/regression/bin/sh/builtins/alias.1.stderr1
-rw-r--r--tools/regression/bin/sh/builtins/command1.05
-rw-r--r--tools/regression/bin/sh/builtins/command2.03
-rw-r--r--tools/regression/bin/sh/builtins/command3.013
-rw-r--r--tools/regression/bin/sh/builtins/command3.0.stdout7
-rw-r--r--tools/regression/bin/sh/builtins/command4.1272
-rw-r--r--tools/regression/bin/sh/builtins/command5.014
-rw-r--r--tools/regression/bin/sh/builtins/command5.0.stdout8
-rw-r--r--tools/regression/bin/sh/builtins/hash1.05
-rw-r--r--tools/regression/bin/sh/builtins/hash1.0.stdout1
-rw-r--r--tools/regression/bin/sh/builtins/hash2.04
-rw-r--r--tools/regression/bin/sh/builtins/hash2.0.stdout1
-rw-r--r--tools/regression/bin/sh/builtins/hash3.03
-rw-r--r--tools/regression/bin/sh/builtins/hash3.0.stdout2
-rw-r--r--tools/regression/bin/sh/builtins/return1.07
-rw-r--r--tools/regression/bin/sh/builtins/return2.17
-rw-r--r--tools/regression/bin/sh/builtins/return3.13
-rw-r--r--tools/regression/bin/sh/builtins/type1.08
-rw-r--r--tools/regression/bin/sh/builtins/type1.0.stdout4
-rw-r--r--tools/regression/bin/sh/builtins/unalias.021
-rw-r--r--tools/regression/bin/sh/builtins/var-assign.055
-rw-r--r--tools/regression/bin/sh/errors/bad-parm-exp1.07
-rw-r--r--tools/regression/bin/sh/errors/bad-parm-exp2.22
-rw-r--r--tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr1
-rw-r--r--tools/regression/bin/sh/errors/bad-parm-exp3.22
-rw-r--r--tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr1
-rw-r--r--tools/regression/bin/sh/errors/bad-parm-exp4.22
-rw-r--r--tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr1
-rw-r--r--tools/regression/bin/sh/errors/bad-parm-exp5.22
-rw-r--r--tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr1
-rw-r--r--tools/regression/bin/sh/errors/option-error.046
-rw-r--r--tools/regression/bin/sh/errors/redirection-error.053
-rw-r--r--tools/regression/bin/sh/regress.sh37
-rw-r--r--tools/regression/bin/sh/regress.t6
-rw-r--r--tools/regression/bin/sh/set-e/and1.03
-rw-r--r--tools/regression/bin/sh/set-e/and2.14
-rw-r--r--tools/regression/bin/sh/set-e/and3.04
-rw-r--r--tools/regression/bin/sh/set-e/and4.04
-rw-r--r--tools/regression/bin/sh/set-e/background1.03
-rw-r--r--tools/regression/bin/sh/set-e/cmd1.03
-rw-r--r--tools/regression/bin/sh/set-e/cmd2.14
-rw-r--r--tools/regression/bin/sh/set-e/elif1.05
-rw-r--r--tools/regression/bin/sh/set-e/elif2.05
-rw-r--r--tools/regression/bin/sh/set-e/for1.09
-rw-r--r--tools/regression/bin/sh/set-e/func1.07
-rw-r--r--tools/regression/bin/sh/set-e/func2.17
-rw-r--r--tools/regression/bin/sh/set-e/if1.04
-rw-r--r--tools/regression/bin/sh/set-e/if2.07
-rw-r--r--tools/regression/bin/sh/set-e/if3.04
-rw-r--r--tools/regression/bin/sh/set-e/not1.04
-rw-r--r--tools/regression/bin/sh/set-e/not2.03
-rw-r--r--tools/regression/bin/sh/set-e/or1.03
-rw-r--r--tools/regression/bin/sh/set-e/or2.03
-rw-r--r--tools/regression/bin/sh/set-e/or3.14
-rw-r--r--tools/regression/bin/sh/set-e/pipe1.14
-rw-r--r--tools/regression/bin/sh/set-e/pipe2.03
-rw-r--r--tools/regression/bin/sh/set-e/return1.011
-rw-r--r--tools/regression/bin/sh/set-e/semi1.14
-rw-r--r--tools/regression/bin/sh/set-e/semi2.14
-rw-r--r--tools/regression/bin/sh/set-e/subshell1.03
-rw-r--r--tools/regression/bin/sh/set-e/subshell2.14
-rw-r--r--tools/regression/bin/sh/set-e/until1.05
-rw-r--r--tools/regression/bin/sh/set-e/until2.05
-rw-r--r--tools/regression/bin/sh/set-e/until3.09
-rw-r--r--tools/regression/bin/sh/set-e/while1.04
-rw-r--r--tools/regression/bin/sh/set-e/while2.04
-rw-r--r--tools/regression/bin/sh/set-e/while3.09
-rw-r--r--tools/regression/ccd/layout/Makefile11
-rw-r--r--tools/regression/ccd/layout/a.c16
-rw-r--r--tools/regression/ccd/layout/b.c19
-rw-r--r--tools/regression/ccd/layout/ccd.sh61
-rw-r--r--tools/regression/ccd/layout/ccd0.sh39
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_010
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_410
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_0246
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_2246
-rw-r--r--tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_4966
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_010
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_410
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_0247
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_2246
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_4966
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_010
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_410
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_098
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_268
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_4966
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_0374
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_2248
-rw-r--r--tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_4966
-rw-r--r--tools/regression/ethernet/ethermulti/Makefile7
-rw-r--r--tools/regression/ethernet/ethermulti/ethermulti.c256
-rw-r--r--tools/regression/execve/Makefile70
-rw-r--r--tools/regression/execve/doexec.c58
-rw-r--r--tools/regression/execve/execve.t27
-rw-r--r--tools/regression/execve/tests/badinterplen4
-rw-r--r--tools/regression/execve/tests/devnullscript4
-rw-r--r--tools/regression/execve/tests/goodaout.c47
-rw-r--r--tools/regression/execve/tests/goodscript4
-rw-r--r--tools/regression/execve/tests/nonexistshell4
-rw-r--r--tools/regression/execve/tests/scriptarg4
-rw-r--r--tools/regression/execve/tests/scriptarg-nospace4
-rw-r--r--tools/regression/fifo/fifo_create/Makefile7
-rw-r--r--tools/regression/fifo/fifo_create/fifo_create.c237
-rw-r--r--tools/regression/fifo/fifo_io/Makefile7
-rw-r--r--tools/regression/fifo/fifo_io/fifo_io.c1409
-rw-r--r--tools/regression/fifo/fifo_misc/Makefile7
-rw-r--r--tools/regression/fifo/fifo_misc/fifo_misc.c352
-rw-r--r--tools/regression/fifo/fifo_open/Makefile7
-rw-r--r--tools/regression/fifo/fifo_open/fifo_open.c476
-rw-r--r--tools/regression/file/dup/Makefile7
-rw-r--r--tools/regression/file/dup/dup.c160
-rw-r--r--tools/regression/file/dup/dup.t10
-rw-r--r--tools/regression/file/ftruncate/Makefile7
-rw-r--r--tools/regression/file/ftruncate/ftruncate.c177
-rw-r--r--tools/regression/fstest/LICENSE27
-rw-r--r--tools/regression/fstest/Makefile15
-rw-r--r--tools/regression/fstest/README22
-rw-r--r--tools/regression/fstest/fstest.c995
-rw-r--r--tools/regression/fstest/tests/chflags/00.t178
-rw-r--r--tools/regression/fstest/tests/chflags/01.t20
-rw-r--r--tools/regression/fstest/tests/chflags/02.t18
-rw-r--r--tools/regression/fstest/tests/chflags/03.t25
-rw-r--r--tools/regression/fstest/tests/chflags/04.t19
-rw-r--r--tools/regression/fstest/tests/chflags/05.t35
-rw-r--r--tools/regression/fstest/tests/chflags/06.t21
-rw-r--r--tools/regression/fstest/tests/chflags/07.t54
-rw-r--r--tools/regression/fstest/tests/chflags/08.t70
-rw-r--r--tools/regression/fstest/tests/chflags/09.t82
-rw-r--r--tools/regression/fstest/tests/chflags/10.t62
-rw-r--r--tools/regression/fstest/tests/chflags/11.t70
-rw-r--r--tools/regression/fstest/tests/chflags/12.t43
-rw-r--r--tools/regression/fstest/tests/chflags/13.t14
-rw-r--r--tools/regression/fstest/tests/chmod/00.t161
-rw-r--r--tools/regression/fstest/tests/chmod/01.t18
-rw-r--r--tools/regression/fstest/tests/chmod/02.t15
-rw-r--r--tools/regression/fstest/tests/chmod/03.t22
-rw-r--r--tools/regression/fstest/tests/chmod/04.t17
-rw-r--r--tools/regression/fstest/tests/chmod/05.t31
-rw-r--r--tools/regression/fstest/tests/chmod/06.t19
-rw-r--r--tools/regression/fstest/tests/chmod/07.t31
-rw-r--r--tools/regression/fstest/tests/chmod/08.t59
-rw-r--r--tools/regression/fstest/tests/chmod/09.t37
-rw-r--r--tools/regression/fstest/tests/chmod/10.t12
-rw-r--r--tools/regression/fstest/tests/chmod/11.t53
-rw-r--r--tools/regression/fstest/tests/chown/00.t304
-rw-r--r--tools/regression/fstest/tests/chown/01.t18
-rw-r--r--tools/regression/fstest/tests/chown/02.t15
-rw-r--r--tools/regression/fstest/tests/chown/03.t22
-rw-r--r--tools/regression/fstest/tests/chown/04.t17
-rw-r--r--tools/regression/fstest/tests/chown/05.t32
-rw-r--r--tools/regression/fstest/tests/chown/06.t19
-rw-r--r--tools/regression/fstest/tests/chown/07.t28
-rw-r--r--tools/regression/fstest/tests/chown/08.t53
-rw-r--r--tools/regression/fstest/tests/chown/09.t37
-rw-r--r--tools/regression/fstest/tests/chown/10.t12
-rw-r--r--tools/regression/fstest/tests/conf8
-rw-r--r--tools/regression/fstest/tests/link/00.t151
-rw-r--r--tools/regression/fstest/tests/link/01.t22
-rw-r--r--tools/regression/fstest/tests/link/02.t23
-rw-r--r--tools/regression/fstest/tests/link/03.t28
-rw-r--r--tools/regression/fstest/tests/link/04.t20
-rw-r--r--tools/regression/fstest/tests/link/05.t41
-rw-r--r--tools/regression/fstest/tests/link/06.t43
-rw-r--r--tools/regression/fstest/tests/link/07.t41
-rw-r--r--tools/regression/fstest/tests/link/08.t24
-rw-r--r--tools/regression/fstest/tests/link/09.t18
-rw-r--r--tools/regression/fstest/tests/link/10.t32
-rw-r--r--tools/regression/fstest/tests/link/11.t41
-rw-r--r--tools/regression/fstest/tests/link/12.t55
-rw-r--r--tools/regression/fstest/tests/link/13.t56
-rw-r--r--tools/regression/fstest/tests/link/14.t34
-rw-r--r--tools/regression/fstest/tests/link/15.t38
-rw-r--r--tools/regression/fstest/tests/link/16.t39
-rw-r--r--tools/regression/fstest/tests/link/17.t20
-rw-r--r--tools/regression/fstest/tests/misc.sh96
-rw-r--r--tools/regression/fstest/tests/mkdir/00.t73
-rw-r--r--tools/regression/fstest/tests/mkdir/01.t18
-rw-r--r--tools/regression/fstest/tests/mkdir/02.t13
-rw-r--r--tools/regression/fstest/tests/mkdir/03.t21
-rw-r--r--tools/regression/fstest/tests/mkdir/04.t16
-rw-r--r--tools/regression/fstest/tests/mkdir/05.t29
-rw-r--r--tools/regression/fstest/tests/mkdir/06.t29
-rw-r--r--tools/regression/fstest/tests/mkdir/07.t19
-rw-r--r--tools/regression/fstest/tests/mkdir/08.t53
-rw-r--r--tools/regression/fstest/tests/mkdir/09.t34
-rw-r--r--tools/regression/fstest/tests/mkdir/10.t27
-rw-r--r--tools/regression/fstest/tests/mkdir/11.t36
-rw-r--r--tools/regression/fstest/tests/mkdir/12.t12
-rw-r--r--tools/regression/fstest/tests/mkfifo/00.t73
-rw-r--r--tools/regression/fstest/tests/mkfifo/01.t18
-rw-r--r--tools/regression/fstest/tests/mkfifo/02.t13
-rw-r--r--tools/regression/fstest/tests/mkfifo/03.t21
-rw-r--r--tools/regression/fstest/tests/mkfifo/04.t16
-rw-r--r--tools/regression/fstest/tests/mkfifo/05.t29
-rw-r--r--tools/regression/fstest/tests/mkfifo/06.t29
-rw-r--r--tools/regression/fstest/tests/mkfifo/07.t19
-rw-r--r--tools/regression/fstest/tests/mkfifo/08.t34
-rw-r--r--tools/regression/fstest/tests/mkfifo/09.t27
-rw-r--r--tools/regression/fstest/tests/mkfifo/10.t53
-rw-r--r--tools/regression/fstest/tests/mkfifo/11.t36
-rw-r--r--tools/regression/fstest/tests/mkfifo/12.t12
-rw-r--r--tools/regression/fstest/tests/open/00.t99
-rw-r--r--tools/regression/fstest/tests/open/01.t18
-rw-r--r--tools/regression/fstest/tests/open/02.t14
-rw-r--r--tools/regression/fstest/tests/open/03.t22
-rw-r--r--tools/regression/fstest/tests/open/04.t17
-rw-r--r--tools/regression/fstest/tests/open/05.t29
-rw-r--r--tools/regression/fstest/tests/open/06.t89
-rw-r--r--tools/regression/fstest/tests/open/07.t45
-rw-r--r--tools/regression/fstest/tests/open/08.t19
-rw-r--r--tools/regression/fstest/tests/open/09.t53
-rw-r--r--tools/regression/fstest/tests/open/10.t45
-rw-r--r--tools/regression/fstest/tests/open/11.t39
-rw-r--r--tools/regression/fstest/tests/open/12.t19
-rw-r--r--tools/regression/fstest/tests/open/13.t24
-rw-r--r--tools/regression/fstest/tests/open/14.t37
-rw-r--r--tools/regression/fstest/tests/open/15.t32
-rw-r--r--tools/regression/fstest/tests/open/16.t19
-rw-r--r--tools/regression/fstest/tests/open/17.t15
-rw-r--r--tools/regression/fstest/tests/open/18.t18
-rw-r--r--tools/regression/fstest/tests/open/19.t37
-rw-r--r--tools/regression/fstest/tests/open/20.t25
-rw-r--r--tools/regression/fstest/tests/open/21.t12
-rw-r--r--tools/regression/fstest/tests/open/22.t27
-rw-r--r--tools/regression/fstest/tests/open/23.t16
-rw-r--r--tools/regression/fstest/tests/rename/00.t141
-rw-r--r--tools/regression/fstest/tests/rename/01.t21
-rw-r--r--tools/regression/fstest/tests/rename/02.t26
-rw-r--r--tools/regression/fstest/tests/rename/03.t20
-rw-r--r--tools/regression/fstest/tests/rename/04.t43
-rw-r--r--tools/regression/fstest/tests/rename/05.t41
-rw-r--r--tools/regression/fstest/tests/rename/06.t50
-rw-r--r--tools/regression/fstest/tests/rename/07.t95
-rw-r--r--tools/regression/fstest/tests/rename/08.t95
-rw-r--r--tools/regression/fstest/tests/rename/09.t94
-rw-r--r--tools/regression/fstest/tests/rename/10.t243
-rw-r--r--tools/regression/fstest/tests/rename/11.t24
-rw-r--r--tools/regression/fstest/tests/rename/12.t22
-rw-r--r--tools/regression/fstest/tests/rename/13.t34
-rw-r--r--tools/regression/fstest/tests/rename/14.t34
-rw-r--r--tools/regression/fstest/tests/rename/15.t45
-rw-r--r--tools/regression/fstest/tests/rename/16.t37
-rw-r--r--tools/regression/fstest/tests/rename/17.t20
-rw-r--r--tools/regression/fstest/tests/rename/18.t22
-rw-r--r--tools/regression/fstest/tests/rename/19.t22
-rw-r--r--tools/regression/fstest/tests/rename/20.t35
-rw-r--r--tools/regression/fstest/tests/rmdir/00.t28
-rw-r--r--tools/regression/fstest/tests/rmdir/01.t30
-rw-r--r--tools/regression/fstest/tests/rmdir/02.t14
-rw-r--r--tools/regression/fstest/tests/rmdir/03.t22
-rw-r--r--tools/regression/fstest/tests/rmdir/04.t17
-rw-r--r--tools/regression/fstest/tests/rmdir/05.t19
-rw-r--r--tools/regression/fstest/tests/rmdir/06.t36
-rw-r--r--tools/regression/fstest/tests/rmdir/07.t27
-rw-r--r--tools/regression/fstest/tests/rmdir/08.t27
-rw-r--r--tools/regression/fstest/tests/rmdir/09.t49
-rw-r--r--tools/regression/fstest/tests/rmdir/10.t52
-rw-r--r--tools/regression/fstest/tests/rmdir/11.t40
-rw-r--r--tools/regression/fstest/tests/rmdir/12.t26
-rw-r--r--tools/regression/fstest/tests/rmdir/13.t27
-rw-r--r--tools/regression/fstest/tests/rmdir/14.t32
-rw-r--r--tools/regression/fstest/tests/rmdir/15.t12
-rw-r--r--tools/regression/fstest/tests/symlink/00.t32
-rw-r--r--tools/regression/fstest/tests/symlink/01.t18
-rw-r--r--tools/regression/fstest/tests/symlink/02.t20
-rw-r--r--tools/regression/fstest/tests/symlink/03.t26
-rw-r--r--tools/regression/fstest/tests/symlink/04.t16
-rw-r--r--tools/regression/fstest/tests/symlink/05.t34
-rw-r--r--tools/regression/fstest/tests/symlink/06.t34
-rw-r--r--tools/regression/fstest/tests/symlink/07.t19
-rw-r--r--tools/regression/fstest/tests/symlink/08.t23
-rw-r--r--tools/regression/fstest/tests/symlink/09.t53
-rw-r--r--tools/regression/fstest/tests/symlink/10.t37
-rw-r--r--tools/regression/fstest/tests/symlink/11.t36
-rw-r--r--tools/regression/fstest/tests/symlink/12.t18
-rw-r--r--tools/regression/fstest/tests/truncate/00.t51
-rw-r--r--tools/regression/fstest/tests/truncate/01.t18
-rw-r--r--tools/regression/fstest/tests/truncate/02.t15
-rw-r--r--tools/regression/fstest/tests/truncate/03.t22
-rw-r--r--tools/regression/fstest/tests/truncate/04.t17
-rw-r--r--tools/regression/fstest/tests/truncate/05.t32
-rw-r--r--tools/regression/fstest/tests/truncate/06.t24
-rw-r--r--tools/regression/fstest/tests/truncate/07.t19
-rw-r--r--tools/regression/fstest/tests/truncate/08.t59
-rw-r--r--tools/regression/fstest/tests/truncate/09.t15
-rw-r--r--tools/regression/fstest/tests/truncate/10.t37
-rw-r--r--tools/regression/fstest/tests/truncate/11.t23
-rw-r--r--tools/regression/fstest/tests/truncate/12.t27
-rw-r--r--tools/regression/fstest/tests/truncate/13.t16
-rw-r--r--tools/regression/fstest/tests/truncate/14.t12
-rw-r--r--tools/regression/fstest/tests/unlink/00.t115
-rw-r--r--tools/regression/fstest/tests/unlink/01.t18
-rw-r--r--tools/regression/fstest/tests/unlink/02.t14
-rw-r--r--tools/regression/fstest/tests/unlink/03.t22
-rw-r--r--tools/regression/fstest/tests/unlink/04.t17
-rw-r--r--tools/regression/fstest/tests/unlink/05.t27
-rw-r--r--tools/regression/fstest/tests/unlink/06.t27
-rw-r--r--tools/regression/fstest/tests/unlink/07.t19
-rw-r--r--tools/regression/fstest/tests/unlink/08.t23
-rw-r--r--tools/regression/fstest/tests/unlink/09.t49
-rw-r--r--tools/regression/fstest/tests/unlink/10.t52
-rw-r--r--tools/regression/fstest/tests/unlink/11.t68
-rw-r--r--tools/regression/fstest/tests/unlink/12.t32
-rw-r--r--tools/regression/fstest/tests/unlink/13.t12
-rw-r--r--tools/regression/fsx/Makefile7
-rw-r--r--tools/regression/fsx/fsx.c1149
-rw-r--r--tools/regression/gaithrstress/Makefile7
-rw-r--r--tools/regression/gaithrstress/gaithrstress.c276
-rw-r--r--tools/regression/geom/ConfCmp/ConfCmp.c377
-rw-r--r--tools/regression/geom/ConfCmp/Makefile35
-rw-r--r--tools/regression/geom/ConfCmp/a1.conf414
-rw-r--r--tools/regression/geom/ConfCmp/a1a.conf414
-rw-r--r--tools/regression/geom/ConfCmp/a1b.conf414
-rw-r--r--tools/regression/geom/ConfCmp/a1c.conf414
-rw-r--r--tools/regression/geom/ConfCmp/a1d.conf414
-rw-r--r--tools/regression/geom/ConfCmp/a2.conf207
-rw-r--r--tools/regression/geom/ConfCmp/a2a.conf207
-rw-r--r--tools/regression/geom/ConfCmp/a2b.conf207
-rw-r--r--tools/regression/geom/ConfCmp/a2c.conf206
-rw-r--r--tools/regression/geom/ConfCmp/a2d.conf211
-rw-r--r--tools/regression/geom/Data/disk.alpha.da0.xml33
-rw-r--r--tools/regression/geom/Data/disk.alpha2.da0.xml33
-rw-r--r--tools/regression/geom/Data/disk.apple.xml93
-rw-r--r--tools/regression/geom/Data/disk.beast.da0.xml33
-rw-r--r--tools/regression/geom/Data/disk.critter.ad0.xml178
-rw-r--r--tools/regression/geom/Data/disk.empty.flp.xml12
-rw-r--r--tools/regression/geom/Data/disk.far.ad0.xml51
-rw-r--r--tools/regression/geom/Data/disk.flat.da1.xml97
-rw-r--r--tools/regression/geom/Data/disk.kern.flp.xml51
-rw-r--r--tools/regression/geom/Data/disk.msdos.ext.xml534
-rw-r--r--tools/regression/geom/Data/disk.msdos.flp.xml51
-rw-r--r--tools/regression/geom/Data/disk.pc98.wdc0.xml75
-rw-r--r--tools/regression/geom/Data/disk.sun.da0.xml33
-rw-r--r--tools/regression/geom/Data/disk.sun.da1.xml33
-rw-r--r--tools/regression/geom/Data/disk.typo.ad0.xml219
-rw-r--r--tools/regression/geom/MdLoad/Makefile14
-rw-r--r--tools/regression/geom/MdLoad/MdLoad.c271
-rw-r--r--tools/regression/geom/Ref/disk.alpha.da0.xml7
-rw-r--r--tools/regression/geom/Ref/disk.alpha2.da0.xml5
-rw-r--r--tools/regression/geom/Ref/disk.apple.xml5
-rw-r--r--tools/regression/geom/Ref/disk.beast.da0.xml5
-rw-r--r--tools/regression/geom/Ref/disk.critter.ad0.xml11
-rw-r--r--tools/regression/geom/Ref/disk.empty.flp.xml2
-rw-r--r--tools/regression/geom/Ref/disk.far.ad0.xml4
-rw-r--r--tools/regression/geom/Ref/disk.flat.da1.xml12
-rw-r--r--tools/regression/geom/Ref/disk.kern.flp.xml5
-rw-r--r--tools/regression/geom/Ref/disk.msdos.ext.xml27
-rw-r--r--tools/regression/geom/Ref/disk.msdos.flp.xml2
-rw-r--r--tools/regression/geom/Ref/disk.pc98.wdc0.xml8
-rw-r--r--tools/regression/geom/Ref/disk.sun.da0.xml6
-rw-r--r--tools/regression/geom/Ref/disk.sun.da1.xml9
-rw-r--r--tools/regression/geom/Ref/disk.typo.ad0.xml14
-rw-r--r--tools/regression/geom/RunTest.sh44
-rw-r--r--tools/regression/geom/RunTest.t50
-rw-r--r--tools/regression/geom_concat/conf.sh8
-rw-r--r--tools/regression/geom_concat/test-1.t30
-rw-r--r--tools/regression/geom_concat/test-2.t35
-rw-r--r--tools/regression/geom_eli/attach-d.t38
-rw-r--r--tools/regression/geom_eli/configure-b-B.t130
-rw-r--r--tools/regression/geom_eli/delkey.t140
-rw-r--r--tools/regression/geom_eli/detach-l.t44
-rw-r--r--tools/regression/geom_eli/init-a.t51
-rw-r--r--tools/regression/geom_eli/init-i-P.t22
-rw-r--r--tools/regression/geom_eli/init.t56
-rw-r--r--tools/regression/geom_eli/integrity-copy.t90
-rw-r--r--tools/regression/geom_eli/integrity-data.t60
-rw-r--r--tools/regression/geom_eli/integrity-hmac.t60
-rw-r--r--tools/regression/geom_eli/kill.t97
-rw-r--r--tools/regression/geom_eli/nokey.t65
-rw-r--r--tools/regression/geom_eli/onetime-a.t45
-rw-r--r--tools/regression/geom_eli/onetime-d.t33
-rw-r--r--tools/regression/geom_eli/onetime.t50
-rw-r--r--tools/regression/geom_eli/readonly.t93
-rw-r--r--tools/regression/geom_eli/setkey.t156
-rw-r--r--tools/regression/geom_gate/Makefile8
-rw-r--r--tools/regression/geom_gate/runtests.sh8
-rw-r--r--tools/regression/geom_gate/test-1.sh36
-rw-r--r--tools/regression/geom_gate/test-1.t40
-rw-r--r--tools/regression/geom_gate/test-2.sh28
-rw-r--r--tools/regression/geom_gate/test-2.t31
-rw-r--r--tools/regression/geom_gate/test-3.sh31
-rw-r--r--tools/regression/geom_gate/test-3.t34
-rw-r--r--tools/regression/geom_gpt/gctl.t207
-rw-r--r--tools/regression/geom_gpt/test.c165
-rw-r--r--tools/regression/geom_mirror/conf.sh8
-rw-r--r--tools/regression/geom_mirror/test-1.t34
-rw-r--r--tools/regression/geom_mirror/test-2.t59
-rw-r--r--tools/regression/geom_mirror/test-3.t70
-rw-r--r--tools/regression/geom_mirror/test-4.t70
-rw-r--r--tools/regression/geom_mirror/test-5.t70
-rw-r--r--tools/regression/geom_mirror/test-6.t52
-rw-r--r--tools/regression/geom_mirror/test-7.t70
-rw-r--r--tools/regression/geom_nop/conf.sh7
-rw-r--r--tools/regression/geom_nop/test-1.t25
-rw-r--r--tools/regression/geom_nop/test-2.t29
-rw-r--r--tools/regression/geom_raid3/conf.sh8
-rw-r--r--tools/regression/geom_raid3/test-1.t37
-rw-r--r--tools/regression/geom_raid3/test-10.t39
-rw-r--r--tools/regression/geom_raid3/test-11.t39
-rw-r--r--tools/regression/geom_raid3/test-12.t46
-rw-r--r--tools/regression/geom_raid3/test-2.t39
-rw-r--r--tools/regression/geom_raid3/test-3.t43
-rw-r--r--tools/regression/geom_raid3/test-4.t43
-rw-r--r--tools/regression/geom_raid3/test-5.t43
-rw-r--r--tools/regression/geom_raid3/test-6.t47
-rw-r--r--tools/regression/geom_raid3/test-7.t50
-rw-r--r--tools/regression/geom_raid3/test-8.t46
-rw-r--r--tools/regression/geom_raid3/test-9.t49
-rw-r--r--tools/regression/geom_shsec/conf.sh8
-rw-r--r--tools/regression/geom_shsec/test-1.t37
-rw-r--r--tools/regression/geom_shsec/test-2.t59
-rw-r--r--tools/regression/geom_stripe/conf.sh8
-rw-r--r--tools/regression/geom_stripe/test-1.t30
-rw-r--r--tools/regression/geom_stripe/test-2.t35
-rw-r--r--tools/regression/geom_subr.sh14
-rw-r--r--tools/regression/geom_uzip/.cvsignore2
-rw-r--r--tools/regression/geom_uzip/Makefile23
-rw-r--r--tools/regression/geom_uzip/etalon/etalon.txt43
-rw-r--r--tools/regression/geom_uzip/runtests.sh10
-rw-r--r--tools/regression/geom_uzip/test-1.img.uzip.uue110
-rw-r--r--tools/regression/geom_uzip/test-1.sh36
-rw-r--r--tools/regression/geom_uzip/test-2.sh15
-rw-r--r--tools/regression/ia64/emulated/brl.t99
-rw-r--r--tools/regression/ia64/emulated/test.c172
-rw-r--r--tools/regression/ia64/unaligned/test.c204
-rw-r--r--tools/regression/ia64/unaligned/unaligned.t99
-rw-r--r--tools/regression/include/tgmath/Makefile7
-rw-r--r--tools/regression/include/tgmath/tgmath.c621
-rw-r--r--tools/regression/include/tgmath/tgmath.t10
-rw-r--r--tools/regression/ipsec/ipsec.t104
-rw-r--r--tools/regression/ipsec/ipsec6.t104
-rw-r--r--tools/regression/lib/libc/gen/Makefile11
-rw-r--r--tools/regression/lib/libc/gen/test-fpclassify.c75
-rw-r--r--tools/regression/lib/libc/gen/test-wordexp.c174
-rw-r--r--tools/regression/lib/libc/locale/Makefile25
-rw-r--r--tools/regression/lib/libc/locale/test-btowc.c72
-rw-r--r--tools/regression/lib/libc/locale/test-btowc.t10
-rw-r--r--tools/regression/lib/libc/locale/test-iswctype.c101
-rw-r--r--tools/regression/lib/libc/locale/test-iswctype.t10
-rw-r--r--tools/regression/lib/libc/locale/test-mblen.c114
-rw-r--r--tools/regression/lib/libc/locale/test-mblen.t10
-rw-r--r--tools/regression/lib/libc/locale/test-mbrlen.c129
-rw-r--r--tools/regression/lib/libc/locale/test-mbrlen.t10
-rw-r--r--tools/regression/lib/libc/locale/test-mbrtowc.c163
-rw-r--r--tools/regression/lib/libc/locale/test-mbrtowc.t10
-rw-r--r--tools/regression/lib/libc/locale/test-mbsnrtowcs.c194
-rw-r--r--tools/regression/lib/libc/locale/test-mbsnrtowcs.t10
-rw-r--r--tools/regression/lib/libc/locale/test-mbsrtowcs.c150
-rw-r--r--tools/regression/lib/libc/locale/test-mbsrtowcs.t10
-rw-r--r--tools/regression/lib/libc/locale/test-mbstowcs.c112
-rw-r--r--tools/regression/lib/libc/locale/test-mbstowcs.t10
-rw-r--r--tools/regression/lib/libc/locale/test-mbtowc.c124
-rw-r--r--tools/regression/lib/libc/locale/test-mbtowc.t10
-rw-r--r--tools/regression/lib/libc/locale/test-towctrans.c91
-rw-r--r--tools/regression/lib/libc/locale/test-towctrans.t10
-rw-r--r--tools/regression/lib/libc/locale/test-wcrtomb.c134
-rw-r--r--tools/regression/lib/libc/locale/test-wcrtomb.t10
-rw-r--r--tools/regression/lib/libc/locale/test-wcsnrtombs.c194
-rw-r--r--tools/regression/lib/libc/locale/test-wcsnrtombs.t10
-rw-r--r--tools/regression/lib/libc/locale/test-wcsrtombs.c155
-rw-r--r--tools/regression/lib/libc/locale/test-wcsrtombs.t10
-rw-r--r--tools/regression/lib/libc/locale/test-wcstombs.c129
-rw-r--r--tools/regression/lib/libc/locale/test-wcstombs.t10
-rw-r--r--tools/regression/lib/libc/locale/test-wctomb.c112
-rw-r--r--tools/regression/lib/libc/locale/test-wctomb.t10
-rw-r--r--tools/regression/lib/libc/net/Makefile12
-rw-r--r--tools/regression/lib/libc/net/test-ether.c235
-rw-r--r--tools/regression/lib/libc/net/test-ether.t10
-rw-r--r--tools/regression/lib/libc/net/test-eui64.h55
-rw-r--r--tools/regression/lib/libc/net/test-eui64_aton.c73
-rw-r--r--tools/regression/lib/libc/net/test-eui64_aton.t10
-rw-r--r--tools/regression/lib/libc/net/test-eui64_line.c81
-rw-r--r--tools/regression/lib/libc/net/test-eui64_line.t10
-rw-r--r--tools/regression/lib/libc/net/test-eui64_ntoa.c54
-rw-r--r--tools/regression/lib/libc/net/test-eui64_ntoa.t10
-rw-r--r--tools/regression/lib/libc/nss/Makefile12
-rw-r--r--tools/regression/lib/libc/nss/README203
-rw-r--r--tools/regression/lib/libc/nss/mach94
-rw-r--r--tools/regression/lib/libc/nss/test-getaddr.c538
-rw-r--r--tools/regression/lib/libc/nss/test-getaddr.t33
-rw-r--r--tools/regression/lib/libc/nss/test-getgr.c534
-rw-r--r--tools/regression/lib/libc/nss/test-getgr.t29
-rw-r--r--tools/regression/lib/libc/nss/test-gethostby.c1051
-rw-r--r--tools/regression/lib/libc/nss/test-gethostby.t78
-rw-r--r--tools/regression/lib/libc/nss/test-getproto.c536
-rw-r--r--tools/regression/lib/libc/nss/test-getproto.t29
-rw-r--r--tools/regression/lib/libc/nss/test-getpw.c489
-rw-r--r--tools/regression/lib/libc/nss/test-getpw.t29
-rw-r--r--tools/regression/lib/libc/nss/test-getrpc.c535
-rw-r--r--tools/regression/lib/libc/nss/test-getrpc.t29
-rw-r--r--tools/regression/lib/libc/nss/test-getserv.c551
-rw-r--r--tools/regression/lib/libc/nss/test-getserv.t29
-rw-r--r--tools/regression/lib/libc/nss/test-getusershell.c235
-rw-r--r--tools/regression/lib/libc/nss/test-getusershell.t22
-rw-r--r--tools/regression/lib/libc/nss/testutil.h334
-rw-r--r--tools/regression/lib/libc/regex/Makefile11
-rw-r--r--tools/regression/lib/libc/resolv/Makefile15
-rw-r--r--tools/regression/lib/libc/resolv/mach92
-rw-r--r--tools/regression/lib/libc/resolv/resolv.c330
-rw-r--r--tools/regression/lib/libc/resolv/resolv.t24
-rw-r--r--tools/regression/lib/libc/stdio/Makefile12
-rw-r--r--tools/regression/lib/libc/stdio/test-perror.c107
-rw-r--r--tools/regression/lib/libc/stdio/test-perror.t10
-rw-r--r--tools/regression/lib/libc/stdio/test-printfloat.c329
-rw-r--r--tools/regression/lib/libc/stdio/test-printfloat.t10
-rw-r--r--tools/regression/lib/libc/stdio/test-scanfloat.c293
-rw-r--r--tools/regression/lib/libc/stdio/test-scanfloat.t10
-rw-r--r--tools/regression/lib/libc/stdlib/Makefile13
-rw-r--r--tools/regression/lib/libc/stdlib/test-heapsort.c66
-rw-r--r--tools/regression/lib/libc/stdlib/test-heapsort.t10
-rw-r--r--tools/regression/lib/libc/stdlib/test-mergesort.c66
-rw-r--r--tools/regression/lib/libc/stdlib/test-mergesort.t10
-rw-r--r--tools/regression/lib/libc/stdlib/test-qsort.c66
-rw-r--r--tools/regression/lib/libc/stdlib/test-qsort.t10
-rw-r--r--tools/regression/lib/libc/stdlib/test-sort.h269
-rw-r--r--tools/regression/lib/libc/string/Makefile15
-rw-r--r--tools/regression/lib/libc/string/test-strerror.c130
-rw-r--r--tools/regression/lib/libc/string/test-strerror.t10
-rw-r--r--tools/regression/lib/libmp/Makefile12
-rw-r--r--tools/regression/lib/libmp/test-libmp.c211
-rw-r--r--tools/regression/lib/libmp/test-libmp.t10
-rw-r--r--tools/regression/lib/libutil/Makefile12
-rw-r--r--tools/regression/lib/libutil/test-trimdomain-nodomain.c90
-rw-r--r--tools/regression/lib/libutil/test-trimdomain-nodomain.t10
-rw-r--r--tools/regression/lib/libutil/test-trimdomain.c90
-rw-r--r--tools/regression/lib/libutil/test-trimdomain.t10
-rw-r--r--tools/regression/lib/msun/Makefile13
-rw-r--r--tools/regression/lib/msun/test-fenv.c549
-rw-r--r--tools/regression/lib/msun/test-fenv.t10
-rw-r--r--tools/regression/lib/msun/test-ilogb.c83
-rw-r--r--tools/regression/lib/msun/test-ilogb.t10
-rw-r--r--tools/regression/lib/msun/test-lrint.c127
-rw-r--r--tools/regression/lib/msun/test-lrint.t10
-rw-r--r--tools/regression/lib/msun/test-lround.c110
-rw-r--r--tools/regression/lib/msun/test-lround.t10
-rw-r--r--tools/regression/lib/msun/test-next.c261
-rw-r--r--tools/regression/lib/msun/test-next.t10
-rw-r--r--tools/regression/lib/msun/test-rem.c151
-rw-r--r--tools/regression/lib/msun/test-rem.t10
-rw-r--r--tools/regression/mac/mac_bsdextended/Makefile8
-rw-r--r--tools/regression/mac/mac_bsdextended/test_matches.sh167
-rw-r--r--tools/regression/mac/mac_bsdextended/test_ugidfw.c238
-rw-r--r--tools/regression/mlock/Makefile6
-rw-r--r--tools/regression/mlock/mlock.c91
-rw-r--r--tools/regression/mqueue/Makefile5
-rw-r--r--tools/regression/mqueue/mqtest1/Makefile8
-rw-r--r--tools/regression/mqueue/mqtest1/mqtest1.c51
-rw-r--r--tools/regression/mqueue/mqtest2/Makefile8
-rw-r--r--tools/regression/mqueue/mqtest2/mqtest2.c88
-rw-r--r--tools/regression/mqueue/mqtest3/Makefile8
-rw-r--r--tools/regression/mqueue/mqtest3/mqtest3.c104
-rw-r--r--tools/regression/mqueue/mqtest4/Makefile8
-rw-r--r--tools/regression/mqueue/mqtest4/mqtest4.c110
-rw-r--r--tools/regression/mqueue/mqtest5/Makefile8
-rw-r--r--tools/regression/mqueue/mqtest5/mqtest5.c118
-rw-r--r--tools/regression/msdosfs/msdosfstest-2.sh22
-rw-r--r--tools/regression/msdosfs/msdosfstest-3.sh22
-rw-r--r--tools/regression/msdosfs/msdosfstest-4.sh37
-rw-r--r--tools/regression/msdosfs/msdosfstest-5.sh40
-rw-r--r--tools/regression/msdosfs/msdosfstest-6.sh22
-rw-r--r--tools/regression/msdosfs/msdosfstest.sh23
-rw-r--r--tools/regression/net80211/ccmp/Makefile8
-rw-r--r--tools/regression/net80211/ccmp/test_ccmp.c749
-rw-r--r--tools/regression/net80211/tkip/Makefile8
-rw-r--r--tools/regression/net80211/tkip/test_tkip.c388
-rw-r--r--tools/regression/net80211/wep/Makefile8
-rw-r--r--tools/regression/net80211/wep/test_wep.c335
-rw-r--r--tools/regression/netatalk/simple_send/Makefile8
-rw-r--r--tools/regression/netatalk/simple_send/simple_send.c162
-rw-r--r--tools/regression/netinet/ipbroadcast/Makefile10
-rw-r--r--tools/regression/netinet/ipbroadcast/ipbroadcast.c366
-rw-r--r--tools/regression/netinet/ipmulticast/Makefile11
-rw-r--r--tools/regression/netinet/ipmulticast/ipmulticast.c787
-rw-r--r--tools/regression/netinet/ipsockopt/Makefile8
-rw-r--r--tools/regression/netinet/ipsockopt/ipsockopt.c943
-rw-r--r--tools/regression/netinet/ipsockopt/ipsockopt.t10
-rw-r--r--tools/regression/netinet/msocket/Makefile7
-rw-r--r--tools/regression/netinet/msocket/msocket.c464
-rw-r--r--tools/regression/netinet/msocket_ifnet_remove/Makefile7
-rw-r--r--tools/regression/netinet/msocket_ifnet_remove/msocket_ifnet_remove.c244
-rw-r--r--tools/regression/netinet/rawconnect/Makefile8
-rw-r--r--tools/regression/netinet/rawconnect/rawconnect.c77
-rw-r--r--tools/regression/netinet/rawconnect/rawconnect.t22
-rw-r--r--tools/regression/netinet/tcpconnect/Makefile8
-rw-r--r--tools/regression/netinet/tcpconnect/tcpconnect.c150
-rw-r--r--tools/regression/netinet/tcpdrop/Makefile9
-rw-r--r--tools/regression/netinet/tcpdrop/tcpdrop.c248
-rw-r--r--tools/regression/netinet/tcpfullwindowrst/Makefile6
-rw-r--r--tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrst.t7
-rw-r--r--tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrsttest.c131
-rw-r--r--tools/regression/netinet/tcpsockclosebeforeaccept/Makefile9
-rw-r--r--tools/regression/netinet/tcpsockclosebeforeaccept/tcpsockclosebeforeaccept.c201
-rw-r--r--tools/regression/netinet/tcpsocktimewait/Makefile9
-rw-r--r--tools/regression/netinet/tcpsocktimewait/tcpsocktimewait.c172
-rw-r--r--tools/regression/netinet/tcpstream/Makefile9
-rw-r--r--tools/regression/netinet/tcpstream/README20
-rw-r--r--tools/regression/netinet/tcpstream/tcpstream.c233
-rw-r--r--tools/regression/netinet/udpconnectjail/Makefile7
-rw-r--r--tools/regression/netinet/udpconnectjail/udpconnectjail.c110
-rw-r--r--tools/regression/netinet6/inet6_rth/Makefile10
-rw-r--r--tools/regression/netinet6/inet6_rth/inet6_rth-segments.c336
-rw-r--r--tools/regression/netinet6/inet6_rth/test_subr.c166
-rw-r--r--tools/regression/netinet6/inet6_rth/test_subr.h44
-rw-r--r--tools/regression/netinet6/ip6_sockets/Makefile9
-rw-r--r--tools/regression/netinet6/ip6_sockets/ip6_sockets.c88
-rw-r--r--tools/regression/netipx/README11
-rw-r--r--tools/regression/netipx/ipxdgramloopback/Makefile12
-rw-r--r--tools/regression/netipx/ipxdgramloopback/ipxdgramloopback.c118
-rw-r--r--tools/regression/netipx/ipxsocket/Makefile8
-rw-r--r--tools/regression/netipx/ipxsocket/ipxsocket.c93
-rw-r--r--tools/regression/netipx/spxabort/Makefile12
-rw-r--r--tools/regression/netipx/spxabort/spxabort.c96
-rw-r--r--tools/regression/netipx/spxloopback/Makefile12
-rw-r--r--tools/regression/netipx/spxloopback/spxloopback.c258
-rw-r--r--tools/regression/nfsmmap/Makefile3
-rw-r--r--tools/regression/nfsmmap/README20
-rw-r--r--tools/regression/nfsmmap/test1/Makefile27
-rw-r--r--tools/regression/nfsmmap/test1/test1.c46
-rw-r--r--tools/regression/nfsmmap/test1/test1.good.uu95
-rw-r--r--tools/regression/nfsmmap/test1/test1.zeros.uu95
-rw-r--r--tools/regression/nfsmmap/test2/Makefile27
-rw-r--r--tools/regression/nfsmmap/test2/test2.c44
-rw-r--r--tools/regression/nfsmmap/test2/test2.good.uu95
-rw-r--r--tools/regression/nfsmmap/test2/test2.zeros.uu95
-rw-r--r--tools/regression/p1003_1b/Makefile17
-rw-r--r--tools/regression/p1003_1b/README14
-rw-r--r--tools/regression/p1003_1b/fifo.c227
-rw-r--r--tools/regression/p1003_1b/main.c78
-rw-r--r--tools/regression/p1003_1b/memlock.c91
-rw-r--r--tools/regression/p1003_1b/p26.c65
-rw-r--r--tools/regression/p1003_1b/prutil.c61
-rw-r--r--tools/regression/p1003_1b/prutil.h14
-rw-r--r--tools/regression/p1003_1b/sched.c294
-rw-r--r--tools/regression/p1003_1b/yield.c197
-rw-r--r--tools/regression/pipe/Makefile16
-rw-r--r--tools/regression/pipe/bigpipetest.c82
-rw-r--r--tools/regression/pipe/bigpipetest.t10
-rw-r--r--tools/regression/pipe/pipe-fstatbug.c82
-rw-r--r--tools/regression/pipe/pipe-overcommit1.c47
-rw-r--r--tools/regression/pipe/pipe-overcommit2.c69
-rw-r--r--tools/regression/pipe/pipe-reverse.c112
-rw-r--r--tools/regression/pipe/pipe-wraparound.c102
-rw-r--r--tools/regression/priv/Makefile40
-rw-r--r--tools/regression/priv/main.c184
-rw-r--r--tools/regression/priv/main.h90
-rw-r--r--tools/regression/priv/priv_acct.c178
-rw-r--r--tools/regression/priv/priv_adjtime.c75
-rw-r--r--tools/regression/priv/priv_clock_settime.c76
-rw-r--r--tools/regression/priv/priv_io.c135
-rw-r--r--tools/regression/priv/priv_kenv_set.c68
-rw-r--r--tools/regression/priv/priv_kenv_unset.c77
-rw-r--r--tools/regression/priv/priv_proc_setlogin.c73
-rw-r--r--tools/regression/priv/priv_proc_setrlimit.c137
-rw-r--r--tools/regression/priv/priv_sched_rtprio.c234
-rw-r--r--tools/regression/priv/priv_sched_setpriority.c163
-rw-r--r--tools/regression/priv/priv_settimeofday.c76
-rw-r--r--tools/regression/priv/priv_sysctl_write.c89
-rw-r--r--tools/regression/priv/priv_vfs_admin.c328
-rw-r--r--tools/regression/priv/priv_vfs_chown.c170
-rw-r--r--tools/regression/priv/priv_vfs_chroot.c63
-rw-r--r--tools/regression/priv/priv_vfs_clearsugid.c215
-rw-r--r--tools/regression/priv/priv_vfs_extattr_system.c96
-rw-r--r--tools/regression/priv/priv_vfs_fhopen.c92
-rw-r--r--tools/regression/priv/priv_vfs_fhstat.c89
-rw-r--r--tools/regression/priv/priv_vfs_fhstatfs.c89
-rw-r--r--tools/regression/priv/priv_vfs_generation.c113
-rw-r--r--tools/regression/priv/priv_vfs_getfh.c78
-rw-r--r--tools/regression/priv/priv_vfs_read_write.c370
-rw-r--r--tools/regression/priv/priv_vfs_setgid.c143
-rw-r--r--tools/regression/priv/priv_vfs_stickyfile.c140
-rw-r--r--tools/regression/priv/priv_vm_madv_protect.c64
-rw-r--r--tools/regression/priv/priv_vm_mlock.c64
-rw-r--r--tools/regression/priv/priv_vm_munlock.c64
-rw-r--r--tools/regression/priv/test_utimes.c153
-rw-r--r--tools/regression/pthread/cv_cancel1/Makefile8
-rw-r--r--tools/regression/pthread/cv_cancel1/cv_cancel1.c85
-rw-r--r--tools/regression/redzone9/Makefile6
-rw-r--r--tools/regression/redzone9/README10
-rw-r--r--tools/regression/redzone9/redzone.c141
-rw-r--r--tools/regression/redzone9/test.sh10
-rw-r--r--tools/regression/security/access/Makefile9
-rw-r--r--tools/regression/security/access/testaccess.c360
-rw-r--r--tools/regression/security/proc_to_proc/Makefile12
-rw-r--r--tools/regression/security/proc_to_proc/README54
-rw-r--r--tools/regression/security/proc_to_proc/scenario.c433
-rw-r--r--tools/regression/security/proc_to_proc/scenario.h34
-rw-r--r--tools/regression/security/proc_to_proc/testuid.c65
-rw-r--r--tools/regression/sigqueue/Makefile5
-rw-r--r--tools/regression/sigqueue/sigqtest1/Makefile8
-rw-r--r--tools/regression/sigqueue/sigqtest1/sigqtest1.c49
-rw-r--r--tools/regression/sigqueue/sigqtest2/Makefile8
-rw-r--r--tools/regression/sigqueue/sigqtest2/sigqtest2.c91
-rw-r--r--tools/regression/sockets/accept_fd_leak/Makefile11
-rw-r--r--tools/regression/sockets/accept_fd_leak/accept_fd_leak.c197
-rw-r--r--tools/regression/sockets/accept_fd_leak/accept_fd_leak.t10
-rw-r--r--tools/regression/sockets/accf_data_attach/Makefile11
-rw-r--r--tools/regression/sockets/accf_data_attach/accf_data_attach.c219
-rw-r--r--tools/regression/sockets/accf_data_attach/accf_data_attach.t10
-rw-r--r--tools/regression/sockets/kqueue/Makefile8
-rw-r--r--tools/regression/sockets/kqueue/kqueue.c368
-rw-r--r--tools/regression/sockets/kqueue/kqueue.t10
-rw-r--r--tools/regression/sockets/listen_backlog/Makefile7
-rw-r--r--tools/regression/sockets/listen_backlog/listen_backlog.c382
-rw-r--r--tools/regression/sockets/listenclose/Makefile9
-rw-r--r--tools/regression/sockets/listenclose/listenclose.c111
-rw-r--r--tools/regression/sockets/pr_atomic/Makefile7
-rw-r--r--tools/regression/sockets/pr_atomic/pr_atomic.c109
-rw-r--r--tools/regression/sockets/reconnect/Makefile9
-rw-r--r--tools/regression/sockets/reconnect/reconnect.c140
-rw-r--r--tools/regression/sockets/rtsocket/Makefile7
-rw-r--r--tools/regression/sockets/rtsocket/rtsocket.c101
-rw-r--r--tools/regression/sockets/sblock/Makefile9
-rw-r--r--tools/regression/sockets/sblock/sblock.c207
-rw-r--r--tools/regression/sockets/sendfile/Makefile9
-rw-r--r--tools/regression/sockets/sendfile/sendfile.c369
-rw-r--r--tools/regression/sockets/shutdown/Makefile9
-rw-r--r--tools/regression/sockets/shutdown/shutdown.c108
-rw-r--r--tools/regression/sockets/sigpipe/Makefile9
-rw-r--r--tools/regression/sockets/sigpipe/sigpipe.c322
-rw-r--r--tools/regression/sockets/socketpair/Makefile9
-rw-r--r--tools/regression/sockets/socketpair/socketpair.c161
-rw-r--r--tools/regression/sockets/unix_bindconnect/Makefile7
-rw-r--r--tools/regression/sockets/unix_bindconnect/unix_bindconnect.c318
-rw-r--r--tools/regression/sockets/unix_cmsg/Makefile7
-rw-r--r--tools/regression/sockets/unix_cmsg/README127
-rw-r--r--tools/regression/sockets/unix_cmsg/unix_cmsg.c1630
-rw-r--r--tools/regression/sockets/unix_cmsg/unix_cmsg.t57
-rw-r--r--tools/regression/sockets/unix_passfd/Makefile7
-rw-r--r--tools/regression/sockets/unix_passfd/unix_passfd.c307
-rw-r--r--tools/regression/sockets/unix_sendtorace/Makefile7
-rw-r--r--tools/regression/sockets/unix_sendtorace/unix_sendtorace.c212
-rw-r--r--tools/regression/sockets/unix_socket/Makefile7
-rw-r--r--tools/regression/sockets/unix_socket/unix_socket.c84
-rw-r--r--tools/regression/sockets/zerosend/Makefile7
-rw-r--r--tools/regression/sockets/zerosend/zerosend.c290
-rw-r--r--tools/regression/sysvmsg/Makefile15
-rw-r--r--tools/regression/sysvmsg/README13
-rw-r--r--tools/regression/sysvmsg/msgtest.c351
-rw-r--r--tools/regression/sysvsem/Makefile15
-rw-r--r--tools/regression/sysvsem/README13
-rw-r--r--tools/regression/sysvsem/semtest.c348
-rw-r--r--tools/regression/sysvshm/Makefile15
-rw-r--r--tools/regression/sysvshm/README13
-rw-r--r--tools/regression/sysvshm/shmtest.c297
-rw-r--r--tools/regression/tls/Makefile9
-rw-r--r--tools/regression/tls/Makefile.inc1
-rw-r--r--tools/regression/tls/libxx/Makefile9
-rw-r--r--tools/regression/tls/libxx/xx.c12
-rw-r--r--tools/regression/tls/libyy/Makefile9
-rw-r--r--tools/regression/tls/libyy/yy.c3
-rw-r--r--tools/regression/tls/ttls1/Makefile9
-rw-r--r--tools/regression/tls/ttls1/ttls1.c15
-rw-r--r--tools/regression/tls/ttls2/Makefile8
-rw-r--r--tools/regression/tls/ttls2/ttls2.c36
-rw-r--r--tools/regression/tls/ttls3/Makefile24
-rw-r--r--tools/regression/tls/ttls3/elftls.S114
-rw-r--r--tools/regression/tls/ttls3/tls-test-lib.c110
-rw-r--r--tools/regression/tls/ttls3/tls-test.c59
-rw-r--r--tools/regression/tls/ttls4/Makefile8
-rw-r--r--tools/regression/tls/ttls4/ttls4.c41
-rw-r--r--tools/regression/tmpfs/Makefile39
-rw-r--r--tools/regression/tmpfs/h_funcs.subr191
-rw-r--r--tools/regression/tmpfs/h_tools.c283
-rw-r--r--tools/regression/tmpfs/t_create98
-rw-r--r--tools/regression/tmpfs/t_dots63
-rw-r--r--tools/regression/tmpfs/t_exec62
-rw-r--r--tools/regression/tmpfs/t_id_gen75
-rw-r--r--tools/regression/tmpfs/t_link108
-rw-r--r--tools/regression/tmpfs/t_mkdir110
-rw-r--r--tools/regression/tmpfs/t_mount85
-rw-r--r--tools/regression/tmpfs/t_pipes62
-rw-r--r--tools/regression/tmpfs/t_read_write81
-rw-r--r--tools/regression/tmpfs/t_readdir93
-rw-r--r--tools/regression/tmpfs/t_remove83
-rw-r--r--tools/regression/tmpfs/t_rename150
-rw-r--r--tools/regression/tmpfs/t_rmdir114
-rw-r--r--tools/regression/tmpfs/t_setattr115
-rw-r--r--tools/regression/tmpfs/t_sizes99
-rw-r--r--tools/regression/tmpfs/t_sockets63
-rw-r--r--tools/regression/tmpfs/t_statvfs62
-rw-r--r--tools/regression/tmpfs/t_symlink88
-rw-r--r--tools/regression/tmpfs/t_times114
-rw-r--r--tools/regression/tmpfs/t_trail_slash61
-rw-r--r--tools/regression/tmpfs/t_truncate64
-rw-r--r--tools/regression/tmpfs/t_vnd95
-rw-r--r--tools/regression/tmpfs/t_vnode_leak63
-rw-r--r--tools/regression/ufs/uprintf/Makefile7
-rw-r--r--tools/regression/ufs/uprintf/ufs_uprintf.c188
-rw-r--r--tools/regression/usr.bin/Makefile5
-rw-r--r--tools/regression/usr.bin/calendar/Makefile4
-rw-r--r--tools/regression/usr.bin/calendar/calendar.calibrate374
-rw-r--r--tools/regression/usr.bin/calendar/regress.a1.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.a2.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.a3.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.a4.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.a5.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.b1.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.b2.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.b3.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.b4.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.b5.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.s1.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.s2.out2
-rw-r--r--tools/regression/usr.bin/calendar/regress.s3.out2
-rw-r--r--tools/regression/usr.bin/calendar/regress.s4.out2
-rw-r--r--tools/regression/usr.bin/calendar/regress.sh53
-rw-r--r--tools/regression/usr.bin/calendar/regress.t6
-rw-r--r--tools/regression/usr.bin/calendar/regress.w0-1.out1
-rw-r--r--tools/regression/usr.bin/calendar/regress.w0-2.out1
-rw-r--r--tools/regression/usr.bin/calendar/regress.w0-3.out1
-rw-r--r--tools/regression/usr.bin/calendar/regress.w0-4.out1
-rw-r--r--tools/regression/usr.bin/calendar/regress.w0-5.out1
-rw-r--r--tools/regression/usr.bin/calendar/regress.w0-6.out1
-rw-r--r--tools/regression/usr.bin/calendar/regress.w0-7.out1
-rw-r--r--tools/regression/usr.bin/calendar/regress.wn-1.out1
-rw-r--r--tools/regression/usr.bin/calendar/regress.wn-2.out2
-rw-r--r--tools/regression/usr.bin/calendar/regress.wn-3.out3
-rw-r--r--tools/regression/usr.bin/calendar/regress.wn-4.out4
-rw-r--r--tools/regression/usr.bin/calendar/regress.wn-5.out5
-rw-r--r--tools/regression/usr.bin/calendar/regress.wn-6.out6
-rw-r--r--tools/regression/usr.bin/calendar/regress.wn-7.out7
-rw-r--r--tools/regression/usr.bin/env/Makefile17
-rw-r--r--tools/regression/usr.bin/env/regress-env.rgdata384
-rw-r--r--tools/regression/usr.bin/env/regress-sb.rb540
-rw-r--r--tools/regression/usr.bin/file2c/Makefile4
-rw-r--r--tools/regression/usr.bin/file2c/regress.1.out1
-rw-r--r--tools/regression/usr.bin/file2c/regress.2.out3
-rw-r--r--tools/regression/usr.bin/file2c/regress.3.out5
-rw-r--r--tools/regression/usr.bin/file2c/regress.4.out4
-rw-r--r--tools/regression/usr.bin/file2c/regress.5.out1
-rw-r--r--tools/regression/usr.bin/file2c/regress.6.out9
-rw-r--r--tools/regression/usr.bin/file2c/regress.7.out8
-rw-r--r--tools/regression/usr.bin/file2c/regress.8.out4
-rw-r--r--tools/regression/usr.bin/file2c/regress.9.out104
-rw-r--r--tools/regression/usr.bin/file2c/regress.inbin0 -> 2048 bytes
-rw-r--r--tools/regression/usr.bin/file2c/regress.sh19
-rw-r--r--tools/regression/usr.bin/file2c/regress.t6
-rw-r--r--tools/regression/usr.bin/join/Makefile4
-rw-r--r--tools/regression/usr.bin/join/regress.1.in4
-rw-r--r--tools/regression/usr.bin/join/regress.2.in4
-rw-r--r--tools/regression/usr.bin/join/regress.out5
-rw-r--r--tools/regression/usr.bin/join/regress.sh9
-rw-r--r--tools/regression/usr.bin/join/regress.t6
-rw-r--r--tools/regression/usr.bin/jot/Makefile4
-rw-r--r--tools/regression/usr.bin/jot/regress.ascii.outbin0 -> 256 bytes
-rw-r--r--tools/regression/usr.bin/jot/regress.block.out512
-rw-r--r--tools/regression/usr.bin/jot/regress.dddh.out100
-rw-r--r--tools/regression/usr.bin/jot/regress.ddhd.out100
-rw-r--r--tools/regression/usr.bin/jot/regress.ddhd2.out100
-rw-r--r--tools/regression/usr.bin/jot/regress.ddhh.out100
-rw-r--r--tools/regression/usr.bin/jot/regress.ddhh2.out100
-rw-r--r--tools/regression/usr.bin/jot/regress.dhdd.out100
-rw-r--r--tools/regression/usr.bin/jot/regress.dhdh.out100
-rw-r--r--tools/regression/usr.bin/jot/regress.dhhd.out101
-rw-r--r--tools/regression/usr.bin/jot/regress.dhhd2.out141
-rw-r--r--tools/regression/usr.bin/jot/regress.dhhh.out51
-rw-r--r--tools/regression/usr.bin/jot/regress.dhhh2.out71
-rw-r--r--tools/regression/usr.bin/jot/regress.ed.out30
-rw-r--r--tools/regression/usr.bin/jot/regress.grep.out1
-rw-r--r--tools/regression/usr.bin/jot/regress.hddd.out50
-rw-r--r--tools/regression/usr.bin/jot/regress.hddd2.out30
-rw-r--r--tools/regression/usr.bin/jot/regress.hddh.out50
-rw-r--r--tools/regression/usr.bin/jot/regress.hddh2.out30
-rw-r--r--tools/regression/usr.bin/jot/regress.hdhd.out50
-rw-r--r--tools/regression/usr.bin/jot/regress.hdhd2.out30
-rw-r--r--tools/regression/usr.bin/jot/regress.hdhh.out50
-rw-r--r--tools/regression/usr.bin/jot/regress.hdhh2.out30
-rw-r--r--tools/regression/usr.bin/jot/regress.hhdd.out50
-rw-r--r--tools/regression/usr.bin/jot/regress.hhdd2.out30
-rw-r--r--tools/regression/usr.bin/jot/regress.hhdh.out50
-rw-r--r--tools/regression/usr.bin/jot/regress.hhdh2.out30
-rw-r--r--tools/regression/usr.bin/jot/regress.hhhd.out50
-rw-r--r--tools/regression/usr.bin/jot/regress.hhhd2.out30
-rw-r--r--tools/regression/usr.bin/jot/regress.hhhh.out50
-rw-r--r--tools/regression/usr.bin/jot/regress.hhhh2.out30
-rw-r--r--tools/regression/usr.bin/jot/regress.n21.out21
-rw-r--r--tools/regression/usr.bin/jot/regress.sh64
-rw-r--r--tools/regression/usr.bin/jot/regress.stutter.out19
-rw-r--r--tools/regression/usr.bin/jot/regress.t6
-rw-r--r--tools/regression/usr.bin/jot/regress.tabs.out1
-rw-r--r--tools/regression/usr.bin/jot/regress.wX.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wXl.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wc.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wdl.out0
-rw-r--r--tools/regression/usr.bin/jot/regress.wdn.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.we.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wf.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wg.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wgd.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wo.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wp1.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wp2.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wp3.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wp4.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wp5.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wp6.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wu.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wwe.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wx.out10
-rw-r--r--tools/regression/usr.bin/jot/regress.wxn.out0
-rw-r--r--tools/regression/usr.bin/jot/regress.x.out1
-rw-r--r--tools/regression/usr.bin/jot/regress.xaa.out26
-rw-r--r--tools/regression/usr.bin/jot/regress.yes.out10
-rw-r--r--tools/regression/usr.bin/lastcomm/Makefile6
-rw-r--r--tools/regression/usr.bin/lastcomm/README10
-rw-r--r--tools/regression/usr.bin/lastcomm/regress.t39
-rw-r--r--tools/regression/usr.bin/lastcomm/v1-amd64-acct.inbin0 -> 1568 bytes
-rw-r--r--tools/regression/usr.bin/lastcomm/v1-amd64.out28
-rw-r--r--tools/regression/usr.bin/lastcomm/v1-i386-acct.inbin0 -> 1344 bytes
-rw-r--r--tools/regression/usr.bin/lastcomm/v1-i386.out28
-rw-r--r--tools/regression/usr.bin/lastcomm/v1-sparc64-acct.inbin0 -> 1568 bytes
-rw-r--r--tools/regression/usr.bin/lastcomm/v1-sparc64.out28
-rw-r--r--tools/regression/usr.bin/lastcomm/v2-amd64-acct.inbin0 -> 2016 bytes
-rw-r--r--tools/regression/usr.bin/lastcomm/v2-amd64.out28
-rw-r--r--tools/regression/usr.bin/lastcomm/v2-i386-acct.inbin0 -> 1792 bytes
-rw-r--r--tools/regression/usr.bin/lastcomm/v2-i386.out28
-rw-r--r--tools/regression/usr.bin/lastcomm/v2-sparc64-acct.inbin0 -> 2592 bytes
-rw-r--r--tools/regression/usr.bin/lastcomm/v2-sparc64.out36
-rw-r--r--tools/regression/usr.bin/lastcomm/values.sh77
-rw-r--r--tools/regression/usr.bin/m4/Makefile4
-rw-r--r--tools/regression/usr.bin/m4/regress.changecom.in3
-rw-r--r--tools/regression/usr.bin/m4/regress.changecom.out3
-rw-r--r--tools/regression/usr.bin/m4/regress.gchangecom.out2
-rw-r--r--tools/regression/usr.bin/m4/regress.sh41
-rw-r--r--tools/regression/usr.bin/m4/regress.t6
-rw-r--r--tools/regression/usr.bin/make/README176
-rw-r--r--tools/regression/usr.bin/make/all.sh16
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/Makefile61
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.31
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.41
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.51
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.61
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.71
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.30
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.40
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.51
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.61
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.71
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.10
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.20
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.30
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.40
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.50
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.60
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.70
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/libtest.abin0 -> 2104 bytes
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd/test.t17
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/Makefile64
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.31
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.41
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.51
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.61
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.71
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.30
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.40
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.51
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.61
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.71
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.10
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.20
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.30
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.40
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.50
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.60
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.70
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/libtest.abin0 -> 2104 bytes
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_44bsd_mod/test.t17
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/Makefile62
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.31
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.41
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.51
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.61
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.71
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.30
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.40
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.50
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.61
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.71
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.10
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.20
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.30
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.40
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.50
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.60
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.70
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/libtest.abin0 -> 2016 bytes
-rw-r--r--tools/regression/usr.bin/make/archives/fmt_oldbsd/test.t17
-rw-r--r--tools/regression/usr.bin/make/basic/t0/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/basic/t0/expected.stderr.11
-rw-r--r--tools/regression/usr.bin/make/basic/t0/expected.stdout.10
-rw-r--r--tools/regression/usr.bin/make/basic/t0/test.t18
-rw-r--r--tools/regression/usr.bin/make/basic/t1/Makefile5
-rw-r--r--tools/regression/usr.bin/make/basic/t1/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/basic/t1/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/basic/t1/expected.stdout.10
-rw-r--r--tools/regression/usr.bin/make/basic/t1/test.t15
-rw-r--r--tools/regression/usr.bin/make/basic/t2/Makefile6
-rw-r--r--tools/regression/usr.bin/make/basic/t2/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/basic/t2/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/basic/t2/expected.stdout.12
-rw-r--r--tools/regression/usr.bin/make/basic/t2/test.t15
-rw-r--r--tools/regression/usr.bin/make/basic/t3/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/basic/t3/expected.stderr.11
-rw-r--r--tools/regression/usr.bin/make/basic/t3/expected.stdout.10
-rw-r--r--tools/regression/usr.bin/make/basic/t3/test.t15
-rw-r--r--tools/regression/usr.bin/make/common.sh537
-rw-r--r--tools/regression/usr.bin/make/shell/builtin/Makefile18
-rw-r--r--tools/regression/usr.bin/make/shell/builtin/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/shell/builtin/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/shell/builtin/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/shell/builtin/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/shell/builtin/expected.stdout.11
-rw-r--r--tools/regression/usr.bin/make/shell/builtin/expected.stdout.21
-rw-r--r--tools/regression/usr.bin/make/shell/builtin/sh6
-rw-r--r--tools/regression/usr.bin/make/shell/builtin/test.t19
-rw-r--r--tools/regression/usr.bin/make/shell/meta/Makefile18
-rw-r--r--tools/regression/usr.bin/make/shell/meta/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/shell/meta/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/shell/meta/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/shell/meta/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/shell/meta/expected.stdout.11
-rw-r--r--tools/regression/usr.bin/make/shell/meta/expected.stdout.21
-rw-r--r--tools/regression/usr.bin/make/shell/meta/sh6
-rw-r--r--tools/regression/usr.bin/make/shell/meta/test.t19
-rw-r--r--tools/regression/usr.bin/make/shell/path/Makefile31
-rw-r--r--tools/regression/usr.bin/make/shell/path/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/shell/path/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/shell/path/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/shell/path/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/shell/path/expected.stdout.11
-rw-r--r--tools/regression/usr.bin/make/shell/path/expected.stdout.21
-rw-r--r--tools/regression/usr.bin/make/shell/path/sh6
-rw-r--r--tools/regression/usr.bin/make/shell/path/test.t22
-rw-r--r--tools/regression/usr.bin/make/shell/path_select/Makefile31
-rw-r--r--tools/regression/usr.bin/make/shell/path_select/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/shell/path_select/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/shell/path_select/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/shell/path_select/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/shell/path_select/expected.stdout.11
-rw-r--r--tools/regression/usr.bin/make/shell/path_select/expected.stdout.21
-rw-r--r--tools/regression/usr.bin/make/shell/path_select/shell6
-rw-r--r--tools/regression/usr.bin/make/shell/path_select/test.t21
-rw-r--r--tools/regression/usr.bin/make/shell/replace/Makefile21
-rw-r--r--tools/regression/usr.bin/make/shell/replace/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/shell/replace/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/shell/replace/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/shell/replace/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/shell/replace/expected.stdout.13
-rw-r--r--tools/regression/usr.bin/make/shell/replace/expected.stdout.26
-rw-r--r--tools/regression/usr.bin/make/shell/replace/shell6
-rw-r--r--tools/regression/usr.bin/make/shell/replace/test.t19
-rw-r--r--tools/regression/usr.bin/make/shell/select/Makefile28
-rw-r--r--tools/regression/usr.bin/make/shell/select/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/shell/select/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/shell/select/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/shell/select/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/shell/select/expected.stdout.11
-rw-r--r--tools/regression/usr.bin/make/shell/select/expected.stdout.21
-rw-r--r--tools/regression/usr.bin/make/shell/select/test.t18
-rw-r--r--tools/regression/usr.bin/make/suffixes/basic/Makefile13
-rw-r--r--tools/regression/usr.bin/make/suffixes/basic/TEST1.a1
-rw-r--r--tools/regression/usr.bin/make/suffixes/basic/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/suffixes/basic/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/suffixes/basic/expected.stdout.12
-rw-r--r--tools/regression/usr.bin/make/suffixes/basic/test.t21
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild1/Makefile7
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild1/TEST1.a1
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild1/TEST2.a1
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild1/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild1/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild1/expected.stdout.12
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild1/test.t21
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild2/Makefile12
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild2/TEST1.a1
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild2/TEST2.a1
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild2/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild2/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild2/expected.stdout.12
-rw-r--r--tools/regression/usr.bin/make/suffixes/src_wild2/test.t21
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/Makefile59
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.status.31
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.status.41
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.status.51
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stderr.30
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stderr.40
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stderr.50
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stdout.11
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stdout.21
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stdout.32
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stdout.41
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/expected.stdout.51
-rw-r--r--tools/regression/usr.bin/make/syntax/enl/test.t15
-rw-r--r--tools/regression/usr.bin/make/syntax/semi/Makefile26
-rw-r--r--tools/regression/usr.bin/make/syntax/semi/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/syntax/semi/expected.status.21
-rw-r--r--tools/regression/usr.bin/make/syntax/semi/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/syntax/semi/expected.stderr.20
-rw-r--r--tools/regression/usr.bin/make/syntax/semi/expected.stdout.12
-rw-r--r--tools/regression/usr.bin/make/syntax/semi/expected.stdout.22
-rw-r--r--tools/regression/usr.bin/make/syntax/semi/test.t15
-rw-r--r--tools/regression/usr.bin/make/variables/modifier_M/Makefile18
-rw-r--r--tools/regression/usr.bin/make/variables/modifier_M/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/variables/modifier_M/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/variables/modifier_M/expected.stdout.17
-rw-r--r--tools/regression/usr.bin/make/variables/modifier_M/test.t11
-rw-r--r--tools/regression/usr.bin/make/variables/t0/Makefile23
-rw-r--r--tools/regression/usr.bin/make/variables/t0/expected.status.11
-rw-r--r--tools/regression/usr.bin/make/variables/t0/expected.stderr.10
-rw-r--r--tools/regression/usr.bin/make/variables/t0/expected.stdout.115
-rw-r--r--tools/regression/usr.bin/make/variables/t0/test.t11
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-F.t24
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-G.t38
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-LF.t41
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-P.t22
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-S.t20
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-U.t38
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-g.t37
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-i.t24
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-j.t75
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-l.t20
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-n.t24
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-o.t24
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-s.t37
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-t.t34
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-v.t25
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-x.t36
-rw-r--r--tools/regression/usr.bin/pkill/pkill-F.t27
-rw-r--r--tools/regression/usr.bin/pkill/pkill-G.t42
-rw-r--r--tools/regression/usr.bin/pkill/pkill-LF.t43
-rw-r--r--tools/regression/usr.bin/pkill/pkill-P.t25
-rw-r--r--tools/regression/usr.bin/pkill/pkill-U.t42
-rw-r--r--tools/regression/usr.bin/pkill/pkill-g.t41
-rw-r--r--tools/regression/usr.bin/pkill/pkill-i.t26
-rw-r--r--tools/regression/usr.bin/pkill/pkill-j.t71
-rw-r--r--tools/regression/usr.bin/pkill/pkill-s.t41
-rw-r--r--tools/regression/usr.bin/pkill/pkill-t.t42
-rw-r--r--tools/regression/usr.bin/pkill/pkill-x.t44
-rw-r--r--tools/regression/usr.bin/printf/Makefile4
-rw-r--r--tools/regression/usr.bin/printf/regress.b.out1
-rw-r--r--tools/regression/usr.bin/printf/regress.d.out1
-rw-r--r--tools/regression/usr.bin/printf/regress.f.out1
-rw-r--r--tools/regression/usr.bin/printf/regress.m1.outbin0 -> 7 bytes
-rw-r--r--tools/regression/usr.bin/printf/regress.m2.out1
-rw-r--r--tools/regression/usr.bin/printf/regress.m3.out4
-rw-r--r--tools/regression/usr.bin/printf/regress.m4.out1
-rw-r--r--tools/regression/usr.bin/printf/regress.s.out1
-rw-r--r--tools/regression/usr.bin/printf/regress.sh16
-rw-r--r--tools/regression/usr.bin/printf/regress.t6
-rw-r--r--tools/regression/usr.bin/regress.m459
-rw-r--r--tools/regression/usr.bin/sed/Makefile5
-rw-r--r--tools/regression/usr.bin/sed/hanoi.sed103
-rw-r--r--tools/regression/usr.bin/sed/math.sed439
-rw-r--r--tools/regression/usr.bin/sed/multitest.t472
-rw-r--r--tools/regression/usr.bin/sed/regress.G.out8
-rw-r--r--tools/regression/usr.bin/sed/regress.P.out8
-rw-r--r--tools/regression/usr.bin/sed/regress.b2a.out3
-rw-r--r--tools/regression/usr.bin/sed/regress.bcb.out4
-rw-r--r--tools/regression/usr.bin/sed/regress.c0.out4
-rw-r--r--tools/regression/usr.bin/sed/regress.c1.out4
-rw-r--r--tools/regression/usr.bin/sed/regress.c2.out3
-rw-r--r--tools/regression/usr.bin/sed/regress.c3.out3
-rw-r--r--tools/regression/usr.bin/sed/regress.hanoi.out17
-rw-r--r--tools/regression/usr.bin/sed/regress.in4
-rw-r--r--tools/regression/usr.bin/sed/regress.math.out1
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/100_9.101
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/101_9.111
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/102_9.121
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/103_9.131
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/104_9.141
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/105_9.151
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/106_9.161
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/107_9.171
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/108_9.181
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/109_9.191
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/10_1.914
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/110_9.201
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/111_9.211
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/112_9.221
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/113_9.231
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/114_9.241
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/115_9.251
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/116_9.261
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/117_9.271
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/118_9.281
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/119_9.291
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/11_1.1014
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/120_9.301
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/121_9.311
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/12_1.1114
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/13_1.1214
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/14_1.1342
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/15_1.1442
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/16_1.1542
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/17_1.1656
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/18_1.1728
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/19_1.1814
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/1_1.128
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/20_2.11
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/21_2.21
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/22_2.31
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/23_2.41
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/24_2.50
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/25_2.61
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/26_2.70
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/27_2.80
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/28_2.91
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/29_2.101
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/2_1.214
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/30_2.111
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/31_2.124
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/32_2.1323
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/33_2.1423
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/34_2.1520
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/35_2.1617
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/36_2.1717
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/37_2.187
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/38_2.191
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/39_2.201
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/3_1.328
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/40_3.114
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/41_3.214
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/42_3.314
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/43_3.414
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/44_4.147
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/45_4.254
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/46_4.356
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/47_4.414
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/48_4.51
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/49_4.61
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/4_1.414
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/50_4.71
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/51_4.80
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/52_5.117
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/53_5.214
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/54_5.312
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/55_5.414
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/56_5.55
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/57_5.65
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/58_5.76
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/59_5.814
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/5_1.4.114
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/60_6.114
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/61_6.213
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/62_6.30
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/63_6.420
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/64_6.514
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/65_6.60
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/66_7.115
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/67_7.232
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/68_7.324
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/69_7.423
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/6_1.528
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/70_7.514
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/71_7.614
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/72_7.72814
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/73_7.81
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/74_8.114
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/75_8.214
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/76_8.314
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/77_8.414
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/78_8.514
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/79_8.614
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/7_1.628
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/80_8.714
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/81_8.814
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/82_8.942
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/83_8.1014
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/84_8.1128
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/85_8.1214
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/86_8.1314
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/87_8.1414
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/88_8.1513
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/89_8.167
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/8_1.728
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/90_8.1714
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/91_9.11
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/92_9.21
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/93_9.31
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/94_9.41
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/95_9.51
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/96_9.61
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/97_9.71
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/98_9.81
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/99_9.91
-rw-r--r--tools/regression/usr.bin/sed/regress.multitest.out/9_1.828
-rw-r--r--tools/regression/usr.bin/sed/regress.psl.out4
-rw-r--r--tools/regression/usr.bin/sed/regress.s3.out1
-rw-r--r--tools/regression/usr.bin/sed/regress.s4.out1
-rw-r--r--tools/regression/usr.bin/sed/regress.s5.out1
-rw-r--r--tools/regression/usr.bin/sed/regress.sg.out1
-rw-r--r--tools/regression/usr.bin/sed/regress.sh69
-rw-r--r--tools/regression/usr.bin/sed/regress.t6
-rw-r--r--tools/regression/usr.bin/sed/regress.y.out1
-rw-r--r--tools/regression/usr.bin/uudecode/Makefile4
-rw-r--r--tools/regression/usr.bin/uudecode/regress.base64.in88
-rw-r--r--tools/regression/usr.bin/uudecode/regress.outbin0 -> 4096 bytes
-rw-r--r--tools/regression/usr.bin/uudecode/regress.sh10
-rw-r--r--tools/regression/usr.bin/uudecode/regress.t6
-rw-r--r--tools/regression/usr.bin/uudecode/regress.traditional.in95
-rw-r--r--tools/regression/usr.bin/uuencode/Makefile4
-rw-r--r--tools/regression/usr.bin/uuencode/regress.base64.out74
-rw-r--r--tools/regression/usr.bin/uuencode/regress.inbin0 -> 4096 bytes
-rw-r--r--tools/regression/usr.bin/uuencode/regress.sh13
-rw-r--r--tools/regression/usr.bin/uuencode/regress.t6
-rw-r--r--tools/regression/usr.bin/uuencode/regress.traditional.out95
-rw-r--r--tools/regression/usr.bin/xargs/Makefile4
-rw-r--r--tools/regression/usr.bin/xargs/regress.I.out4
-rw-r--r--tools/regression/usr.bin/xargs/regress.J.out1
-rw-r--r--tools/regression/usr.bin/xargs/regress.L.out2
-rw-r--r--tools/regression/usr.bin/xargs/regress.R.out4
-rw-r--r--tools/regression/usr.bin/xargs/regress.in4
-rw-r--r--tools/regression/usr.bin/xargs/regress.normal.out1
-rw-r--r--tools/regression/usr.bin/xargs/regress.sh13
-rw-r--r--tools/regression/usr.bin/xargs/regress.t6
-rw-r--r--tools/regression/usr.sbin/Makefile5
-rw-r--r--tools/regression/usr.sbin/sa/Makefile6
-rw-r--r--tools/regression/usr.sbin/sa/prime.sh35
-rw-r--r--tools/regression/usr.sbin/sa/regress.t74
-rw-r--r--tools/regression/usr.sbin/sa/v1-amd64-sav.inbin0 -> 8192 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v1-amd64-sav.out5
-rw-r--r--tools/regression/usr.sbin/sa/v1-amd64-u.out28
-rw-r--r--tools/regression/usr.sbin/sa/v1-amd64-usr.inbin0 -> 8192 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v1-amd64-usr.out1
-rw-r--r--tools/regression/usr.sbin/sa/v1-i386-sav.inbin0 -> 8192 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v1-i386-sav.out5
-rw-r--r--tools/regression/usr.sbin/sa/v1-i386-u.out28
-rw-r--r--tools/regression/usr.sbin/sa/v1-i386-usr.inbin0 -> 8192 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v1-i386-usr.out1
-rw-r--r--tools/regression/usr.sbin/sa/v1-sparc64-sav.inbin0 -> 16384 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v1-sparc64-sav.out5
-rw-r--r--tools/regression/usr.sbin/sa/v1-sparc64-u.out28
-rw-r--r--tools/regression/usr.sbin/sa/v1-sparc64-usr.inbin0 -> 16384 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v1-sparc64-usr.out1
-rw-r--r--tools/regression/usr.sbin/sa/v2-amd64-sav.inbin0 -> 8192 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v2-amd64-u.out28
-rw-r--r--tools/regression/usr.sbin/sa/v2-amd64-usr.inbin0 -> 8192 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v2-i386-sav.inbin0 -> 8192 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v2-i386-u.out28
-rw-r--r--tools/regression/usr.sbin/sa/v2-i386-usr.inbin0 -> 8192 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v2-sparc64-sav.inbin0 -> 16384 bytes
-rw-r--r--tools/regression/usr.sbin/sa/v2-sparc64-u.out36
-rw-r--r--tools/regression/usr.sbin/sa/v2-sparc64-usr.inbin0 -> 16384 bytes
1385 files changed, 83233 insertions, 0 deletions
diff --git a/tools/regression/README b/tools/regression/README
new file mode 100644
index 0000000..edc090a
--- /dev/null
+++ b/tools/regression/README
@@ -0,0 +1,88 @@
+$FreeBSD$
+
+This directory is for regression test programs.
+
+A regression test program is one that will exercise a particular bit of the
+system to check that we have not reintroduced an old bug.
+
+Tests should be implemented in files with a .t extension. Each .t file
+can contain more than one test, and can be implemented in any scripting
+language -- /bin/sh, Perl...
+
+The test protocol is quite simple. At its most basic, each .t file should,
+when run, print a line in this format:
+
+ 1..m
+
+where m is the number of tests that will be run.
+
+Each test should produce a single line of output. This line should start
+with one of
+
+ ok n
+ not ok n
+
+to indicate whether or not the test succeeded. 'n' is the test's number.
+Anything after this on the line (up to the first '#' if present) is
+considered to be the name of the test. Naming tests is optional, but
+encouraged.
+
+A test may be written which is conditional, and may need to be skipped.
+For example, the netatalk tests require 'options NETATALK' in the kernel.
+A test may be skipped by printing '# skip Reason for skipping' after the
+test name. For example,
+
+ ok 1 - netatalk # skip 'options NETATALK' not compiled in
+
+A test may be flagged as 'todo'. This indicates that you expect the test
+to fail (perhaps because the necessary functionality hasn't been written
+yet). 'todo' tests are expected to fail, so when they start working the
+test framework can alert you to this happy occurence. Flag these tests
+with a '# TODO' comment after the test name
+
+ not ok 1 - infiniteloop # TODO write test for an infinite loop
+
+This is modelled on the protocol followed by the Test::Harness Perl
+module (and therefore much of the automated testing carried out by the
+Perl community). More documentation can be found at:
+
+ http://search.cpan.org/~petdance/Test-Harness-2.42/lib/Test/Harness.pm
+
+To run the tests and parse their output install the devel/p5-Test-Harness
+port. This includes the prove(1) command which is used to run the tests
+and collate the output.
+
+ prove geom_concat # run all the tests in geom_concat
+ prove -r lib # run all tests in lib/, and subdirectories
+ prove -r -v lib # as above, with verbose output
+ prove -r # run *all* the tests
+
+Tests that are for parts of the base system should go into a directory here
+which is the same as their path relative to src/, for example the uuencode(1)
+utility resides in src/usr.bin/uuencode so its regression test resides in
+src/tools/regression/usr.bin/uuencode.
+
+To avoid the pre-commit check program complaining about the lack of
+CVS keywords in test data files, use a .in suffix for input files and
+a .out suffix for output files.
+
+To execute individual regression tests for binaries that you are
+developing, add their directory in the path before running the tests.
+Example:
+cd /usr/src/tools/regression/usr.bin
+(PATH=/home/user/src/experimental/jot:$PATH ; make SUBDIR=jot)
+
+Please make a subdir per other regression test, and add a brief description to
+this file.
+
+acct Exercise the integer to float conversion used in acct(5)
+geom Some tests and an out-of-kernel simulator for the GEOM code
+ia64 ia64 specific regression tests
+nfsmmap Some tests to exercise some tricky cases in NFS and mmap
+p1003_1b Exercise 1003.1B scheduler
+pipe Pipe code regression test
+fsx General filesystem exerciser
+sysvmsg SysV IPC Message Queue Regression Utility
+sysvsem SysV IPC Semaphore Regression Utility
+sysvshm SysV IPC Shared Memory Regression Utility
+gaithrstress General threaded getaddrinfo(3) exerciser
diff --git a/tools/regression/TODO b/tools/regression/TODO
new file mode 100644
index 0000000..e8fb9f7
--- /dev/null
+++ b/tools/regression/TODO
@@ -0,0 +1,38 @@
+$FreeBSD$
+---
+
+A lot of the tests written in C use assert(), only printing 'ok' at the end
+of the program if none of the assert()s fired.
+
+This is wrong. They should do the test outside of an assert(), and print
+'ok' or 'not ok' as appropriate, instead of bailing out part way through.
+That way if a test starts failing we'll know exactly which one failed, and
+the other tests can continue.
+
+This probably means a simple libtest.so that they can link against to
+provide an ok() function (the non-fatal assert), probably with some helper
+functions to keep track of test numbers and so on.
+
+---
+
+Any of the tests written in C should link against the libraries under
+/usr/obj rather than using the system libraries.
+
+---
+
+Not everything's been converted to the new style. In particular;
+
+ atm/
+ ccd/
+ some of geom_*/
+ some of netinet/
+ nfsmmap/
+ p1003_1b/
+ some of pipe/
+ security/
+ some of sockets/
+ tls/
+
+needs to be converted. And fsx/ and gaithrstress/ are (I think) standalone
+programs rather than individual tests, so aren't amenable to this sort of
+conversion.
diff --git a/tools/regression/acct/Makefile b/tools/regression/acct/Makefile
new file mode 100644
index 0000000..6834fcb
--- /dev/null
+++ b/tools/regression/acct/Makefile
@@ -0,0 +1,22 @@
+#
+# $FreeBSD$
+#
+# "make" will compile what is needed and run the regression tests.
+#
+PROG= pack
+NO_MAN=
+
+all: regress
+
+pack: pack.c convert.c
+
+convert.c: ../../../sys/kern/kern_acct.c
+ sed -n '/FLOAT_CONVERSION_START/,/FLOAT_CONVERSION_END/p' $? >$@
+
+regress: pack regress.t
+ ./regress.t
+
+clean:
+ rm -f $(PROG) convert.c
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/acct/pack.c b/tools/regression/acct/pack.c
new file mode 100644
index 0000000..122b623
--- /dev/null
+++ b/tools/regression/acct/pack.c
@@ -0,0 +1,105 @@
+/*-
+ * Copyright (c) 2007 Diomidis Spinellis. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <strings.h>
+
+#include <sys/time.h>
+#include <sys/types.h>
+
+#define KASSERT(val, msg) assert(val)
+
+typedef u_int32_t comp_t;
+
+#define AHZ 1000000
+
+#include "convert.c"
+
+static int nerr;
+
+union cf {
+ comp_t c;
+ float f;
+};
+
+static void
+check_result(const char *name, float expected, union cf v)
+{
+ double eps;
+
+ eps = fabs(expected - v.f) / expected;
+ if (eps > FLT_EPSILON) {
+ printf("Error in %s\n", name);
+ printf("Got 0x%08x %12g\n", v.c, v.f);
+ v.f = expected;
+ printf("Expected 0x%08x %12g (%.15lg)\n", v.c, v.f, expected);
+ printf("Epsilon=%lg, rather than %g\n", eps, FLT_EPSILON);
+ nerr++;
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ union cf v;
+ long l;
+ int i, end;
+ struct timeval tv;
+
+ if (argc == 2) {
+ /* Loop test */
+ end = atoi(argv[1]);
+ for (i = 0; i < end; i++) {
+ tv.tv_sec = random();
+ tv.tv_usec = (random() % 1000000);
+ v.c = encode_timeval(tv);
+ check_result("encode_timeval",
+ (float)tv.tv_sec * AHZ + tv.tv_usec, v);
+ l = random();
+ v.c = encode_long(l);
+ check_result("encode_long", l, v);
+ }
+ } else if (argc == 3) {
+ /* Single-value timeval/long test */
+ tv.tv_sec = atol(argv[1]);
+ tv.tv_usec = atol(argv[2]);
+ v.c = encode_timeval(tv);
+ check_result("encode_timeval",
+ (float)tv.tv_sec * AHZ + tv.tv_usec, v);
+ v.c = encode_long(tv.tv_sec);
+ check_result("encode_long", tv.tv_sec, v);
+ } else {
+ fprintf(stderr, "usage:\n%s repetitions\n%s sec usec\n",
+ argv[0], argv[0]);
+ return (1);
+ }
+ return (nerr);
+}
diff --git a/tools/regression/acct/regress.t b/tools/regression/acct/regress.t
new file mode 100644
index 0000000..c078caa
--- /dev/null
+++ b/tools/regression/acct/regress.t
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+DIR=`dirname $0`
+
+check()
+{
+ NUM=$1
+ shift
+ if $DIR/pack $*
+ then
+ echo "ok $NUM"
+ else
+ echo "not ok $NUM"
+ fi
+}
+
+echo 1..7
+
+check 1 0 0
+check 2 0 1
+check 3 1 0
+check 4 1 999999
+check 5 1 1000000
+check 6 2147483647 999999
+check 7 10000000
+
+exit 0
diff --git a/tools/regression/aio/aiotest/Makefile b/tools/regression/aio/aiotest/Makefile
new file mode 100644
index 0000000..bc8add2
--- /dev/null
+++ b/tools/regression/aio/aiotest/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+PROG= aiotest
+NO_MAN=
+
+DPADD= ${LIBUTIL}
+LDADD= -lutil
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/aio/aiotest/aiotest.c b/tools/regression/aio/aiotest/aiotest.c
new file mode 100644
index 0000000..8769dc1
--- /dev/null
+++ b/tools/regression/aio/aiotest/aiotest.c
@@ -0,0 +1,697 @@
+/*-
+ * Copyright (c) 2004 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Regression test to do some very basic AIO exercising on several types of
+ * file descriptors. Currently, the tests consist of initializing a fixed
+ * size buffer with pseudo-random data, writing it to one fd using AIO, then
+ * reading it from a second descriptor using AIO. For some targets, the same
+ * fd is used for write and read (i.e., file, md device), but for others the
+ * operation is performed on a peer (pty, socket, fifo, etc). A timeout is
+ * initiated to detect undo blocking. This test does not attempt to exercise
+ * error cases or more subtle asynchronous behavior, just make sure that the
+ * basic operations work on some basic object types.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/mdioctl.h>
+
+#include <aio.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+#include <termios.h>
+#include <unistd.h>
+
+#define PATH_TEMPLATE "/tmp/aio.XXXXXXXXXX"
+
+/*
+ * GLOBAL_MAX sets the largest usable buffer size to be read and written, as
+ * it sizes ac_buffer in the aio_context structure. It is also the default
+ * size for file I/O. For other types, we use smaller blocks or we risk
+ * blocking (and we run in a single process/thread so that would be bad).
+ */
+#define GLOBAL_MAX 16384
+
+#define BUFFER_MAX GLOBAL_MAX
+struct aio_context {
+ const char *ac_test;
+ int ac_read_fd, ac_write_fd;
+ long ac_seed;
+ char ac_buffer[GLOBAL_MAX];
+ int ac_buflen;
+ int ac_seconds;
+ void (*ac_cleanup)(void *arg);
+ void *ac_cleanup_arg;
+};
+
+static int aio_timedout;
+static int aio_notpresent;
+
+/*
+ * Attempt to provide a cleaner failure mode in the event AIO support is not
+ * present by catching and reporting SIGSYS.
+ */
+static void
+aio_sigsys(int sig)
+{
+
+ aio_notpresent = 1;
+}
+
+static void
+aio_sigsys_setup(void)
+{
+
+ if (signal(SIGSYS, aio_sigsys) == SIG_ERR)
+ errx(-1, "FAIL: signal(SIGSYS): %s", strerror(errno));
+}
+
+/*
+ * Each test run specifies a timeout in seconds. Use the somewhat obsoleted
+ * signal(3) and alarm(3) APIs to set this up.
+ */
+static void
+aio_timeout_signal(int sig)
+{
+
+ aio_timedout = 1;
+}
+
+static void
+aio_timeout_start(const char *string1, const char *string2, int seconds)
+{
+
+ aio_timedout = 0;
+ if (signal(SIGALRM, aio_timeout_signal) == SIG_ERR)
+ errx(-1, "FAIL: %s: %s: aio_timeout_set: signal(SIGALRM): %s",
+ string1, string2, strerror(errno));
+ alarm(seconds);
+}
+
+static void
+aio_timeout_stop(const char *string1, const char *string2)
+{
+
+ if (signal(SIGALRM, NULL) == SIG_ERR)
+ errx(-1, "FAIL: %s: %s: aio_timeout_stop: signal(NULL): %s",
+ string1, string2, strerror(errno));
+ alarm(0);
+}
+
+/*
+ * Fill a buffer given a seed that can be fed into srandom() to initialize
+ * the PRNG in a repeatable manner.
+ */
+static void
+aio_fill_buffer(char *buffer, int len, long seed)
+{
+ char ch;
+ int i;
+
+ srandom(seed);
+ for (i = 0; i < len; i++) {
+ ch = random() & 0xff;
+ buffer[i] = ch;
+ }
+}
+
+/*
+ * Test that a buffer matches a given seed. See aio_fill_buffer(). Return
+ * (1) on a match, (0) on a mismatch.
+ */
+static int
+aio_test_buffer(char *buffer, int len, long seed)
+{
+ char ch;
+ int i;
+
+ srandom(seed);
+ for (i = 0; i < len; i++) {
+ ch = random() & 0xff;
+ if (buffer[i] != ch)
+ return (0);
+ }
+ return (1);
+}
+
+/*
+ * Initialize a testing context given the file descriptors provided by the
+ * test setup.
+ */
+static void
+aio_context_init(struct aio_context *ac, const char *test, int read_fd,
+ int write_fd, int buflen, int seconds, void (*cleanup)(void *),
+ void *cleanup_arg)
+{
+
+ if (buflen > BUFFER_MAX)
+ errx(-1, "FAIL: %s: aio_context_init: buffer too large",
+ test);
+ bzero(ac, sizeof(*ac));
+ ac->ac_test = test;
+ ac->ac_read_fd = read_fd;
+ ac->ac_write_fd = write_fd;
+ ac->ac_buflen = buflen;
+ srandomdev();
+ ac->ac_seed = random();
+ aio_fill_buffer(ac->ac_buffer, buflen, ac->ac_seed);
+ if (aio_test_buffer(ac->ac_buffer, buflen, ac->ac_seed) == 0)
+ errx(-1, "%s: aio_context_init: aio_test_buffer: internal "
+ "error", test);
+ ac->ac_seconds = seconds;
+ ac->ac_cleanup = cleanup;
+ ac->ac_cleanup_arg = cleanup_arg;
+}
+
+/*
+ * Each tester can register a callback to clean up in the event the test
+ * fails. Preserve the value of errno so that subsequent calls to errx()
+ * work properly.
+ */
+static void
+aio_cleanup(struct aio_context *ac)
+{
+ int error;
+
+ if (ac->ac_cleanup == NULL)
+ return;
+ error = errno;
+ (ac->ac_cleanup)(ac->ac_cleanup_arg);
+ errno = error;
+}
+
+/*
+ * Perform a simple write test of our initialized data buffer to the provided
+ * file descriptor.
+ */
+static void
+aio_write_test(struct aio_context *ac)
+{
+ struct aiocb aio, *aiop;
+ ssize_t len;
+ int error;
+
+ bzero(&aio, sizeof(aio));
+ aio.aio_buf = ac->ac_buffer;
+ aio.aio_nbytes = ac->ac_buflen;
+ aio.aio_fildes = ac->ac_write_fd;
+ aio.aio_offset = 0;
+
+ aio_timeout_start(ac->ac_test, "aio_write_test", ac->ac_seconds);
+
+ if (aio_write(&aio) < 0) {
+ if (errno == EINTR) {
+ if (aio_notpresent)
+ errno = EOPNOTSUPP;
+ if (aio_timedout) {
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_write_test: "
+ "aio_write: timed out", ac->ac_test);
+ }
+ }
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_write_test: aio_write: %s",
+ ac->ac_test, strerror(errno));
+ }
+
+ len = aio_waitcomplete(&aiop, NULL);
+ if (len < 0) {
+ if (errno == EINTR) {
+ if (aio_notpresent)
+ errno = EOPNOTSUPP;
+ if (aio_timedout) {
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_write_test: "
+ "aio_waitcomplete: timed out",
+ ac->ac_test);
+ }
+ }
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_write_test: aio_waitcomplete: %s",
+ ac->ac_test, strerror(errno));
+ }
+
+ aio_timeout_stop(ac->ac_test, "aio_write_test");
+
+ if (len != ac->ac_buflen) {
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_write_test: aio_waitcomplete: short "
+ "write (%d)", ac->ac_test, len);
+ }
+}
+
+/*
+ * Perform a simple read test of our initialized data buffer from the
+ * provided file descriptor.
+ */
+static void
+aio_read_test(struct aio_context *ac)
+{
+ struct aiocb aio, *aiop;
+ ssize_t len;
+
+ bzero(ac->ac_buffer, ac->ac_buflen);
+ bzero(&aio, sizeof(aio));
+ aio.aio_buf = ac->ac_buffer;
+ aio.aio_nbytes = ac->ac_buflen;
+ aio.aio_fildes = ac->ac_read_fd;
+ aio.aio_offset = 0;
+
+ aio_timeout_start(ac->ac_test, "aio_read_test", ac->ac_seconds);
+
+ if (aio_read(&aio) < 0) {
+ if (errno == EINTR) {
+ if (aio_notpresent)
+ errno = EOPNOTSUPP;
+ if (aio_timedout) {
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_read_test: "
+ "aio_read: timed out", ac->ac_test);
+ }
+ }
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_read_test: aio_read %s", ac->ac_test,
+ strerror(errno));
+ }
+
+ len = aio_waitcomplete(&aiop, NULL);
+ if (len < 0) {
+ if (errno == EINTR) {
+ if (aio_notpresent)
+ errno = EOPNOTSUPP;
+ if (aio_timedout) {
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_read_test: "
+ "aio_waitcomplete: timed out",
+ ac->ac_test);
+ }
+ }
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_read_test: aio_waitcomplete: %s",
+ ac->ac_test, strerror(errno));
+ }
+
+ aio_timeout_stop(ac->ac_test, "aio_read_test");
+
+ if (len != ac->ac_buflen) {
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_read_test: aio_waitcomplete: short "
+ "read (%d)", ac->ac_test, len);
+ }
+
+ if (aio_test_buffer(ac->ac_buffer, ac->ac_buflen, ac->ac_seed) == 0) {
+ aio_cleanup(ac);
+ errx(-1, "FAIL: %s: aio_read_test: buffer mismatch",
+ ac->ac_test);
+ }
+}
+
+/*
+ * Series of type-specific tests for AIO. For now, we just make sure we can
+ * issue a write and then a read to each type. We assume that once a write
+ * is issued, a read can follow.
+ */
+
+/*
+ * Test with a classic file. Assumes we can create a moderate size temporary
+ * file.
+ */
+struct aio_file_arg {
+ int afa_fd;
+ char *afa_pathname;
+};
+
+static void
+aio_file_cleanup(void *arg)
+{
+ struct aio_file_arg *afa;
+
+ afa = arg;
+ close(afa->afa_fd);
+ unlink(afa->afa_pathname);
+}
+
+#define FILE_LEN GLOBAL_MAX
+#define FILE_TIMEOUT 30
+static int
+aio_file_test(void)
+{
+ char pathname[PATH_MAX];
+ struct aio_file_arg arg;
+ struct aio_context ac;
+ int fd;
+
+ strcpy(pathname, PATH_TEMPLATE);
+ fd = mkstemp(pathname);
+ if (fd == -1)
+ errx(-1, "FAIL: aio_file_test: mkstemp: %s",
+ strerror(errno));
+
+ arg.afa_fd = fd;
+ arg.afa_pathname = pathname;
+
+ aio_context_init(&ac, "aio_file_test", fd, fd, FILE_LEN,
+ FILE_TIMEOUT, aio_file_cleanup, &arg);
+ aio_write_test(&ac);
+ aio_read_test(&ac);
+
+ aio_file_cleanup(&arg);
+
+ fprintf(stderr, "PASS: aio_file_test\n");
+}
+
+struct aio_fifo_arg {
+ int afa_read_fd;
+ int afa_write_fd;
+ char *afa_pathname;
+};
+
+static void
+aio_fifo_cleanup(void *arg)
+{
+ struct aio_fifo_arg *afa;
+
+ afa = arg;
+ if (afa->afa_read_fd != -1)
+ close(afa->afa_read_fd);
+ if (afa->afa_write_fd != -1)
+ close(afa->afa_write_fd);
+ unlink(afa->afa_pathname);
+}
+
+#define FIFO_LEN 256
+#define FIFO_TIMEOUT 30
+static int
+aio_fifo_test(void)
+{
+ int error, read_fd = -1, write_fd = -1;
+ struct aio_fifo_arg arg;
+ char pathname[PATH_MAX];
+ struct aio_context ac;
+
+ /*
+ * In theory, mktemp() can return a name that is then collided with.
+ * Because this is a regression test, we treat that as a test failure
+ * rather than retrying.
+ */
+ strcpy(pathname, PATH_TEMPLATE);
+ mktemp(pathname);
+ if (mkfifo(pathname, 0600) == -1)
+ errx(-1, "FAIL: aio_fifo_test: mkfifo: %s", strerror(errno));
+ arg.afa_pathname = pathname;
+ arg.afa_read_fd = -1;
+ arg.afa_write_fd = -1;
+
+ read_fd = open(pathname, O_RDONLY | O_NONBLOCK);
+ if (read_fd == -1) {
+ error = errno;
+ aio_fifo_cleanup(&arg);
+ errno = error;
+ errx(-1, "FAIL: aio_fifo_test: read_fd open: %s",
+ strerror(errno));
+ }
+ arg.afa_read_fd = read_fd;
+
+ write_fd = open(pathname, O_WRONLY);
+ if (write_fd == -1) {
+ error = errno;
+ aio_fifo_cleanup(&arg);
+ errno = error;
+ errx(-1, "FAIL: aio_fifo_test: write_fd open: %s",
+ strerror(errno));
+ }
+ arg.afa_write_fd = write_fd;
+
+ aio_context_init(&ac, "aio_fifo_test", read_fd, write_fd, FIFO_LEN,
+ FIFO_TIMEOUT, aio_fifo_cleanup, &arg);
+ aio_write_test(&ac);
+ aio_read_test(&ac);
+
+ aio_fifo_cleanup(&arg);
+
+ fprintf(stderr, "PASS: aio_fifo_test\n");
+}
+
+struct aio_unix_socketpair_arg {
+ int asa_sockets[2];
+};
+
+static void
+aio_unix_socketpair_cleanup(void *arg)
+{
+ struct aio_unix_socketpair_arg *asa;
+
+ asa = arg;
+ close(asa->asa_sockets[0]);
+ close(asa->asa_sockets[1]);
+}
+
+#define UNIX_SOCKETPAIR_LEN 256
+#define UNIX_SOCKETPAIR_TIMEOUT 30
+static int
+aio_unix_socketpair_test(void)
+{
+ struct aio_unix_socketpair_arg arg;
+ struct aio_context ac;
+ int sockets[2];
+
+ if (socketpair(PF_UNIX, SOCK_STREAM, 0, sockets) < 0)
+ errx(-1, "FAIL: aio_socketpair_test: socketpair: %s",
+ strerror(errno));
+
+ arg.asa_sockets[0] = sockets[0];
+ arg.asa_sockets[1] = sockets[1];
+ aio_context_init(&ac, "aio_unix_socketpair_test", sockets[0],
+ sockets[1], UNIX_SOCKETPAIR_LEN, UNIX_SOCKETPAIR_TIMEOUT,
+ aio_unix_socketpair_cleanup, &arg);
+ aio_write_test(&ac);
+ aio_read_test(&ac);
+
+ aio_unix_socketpair_cleanup(&arg);
+
+ fprintf(stderr, "PASS: aio_unix_socketpair_test\n");
+}
+
+struct aio_pty_arg {
+ int apa_read_fd;
+ int apa_write_fd;
+};
+
+static void
+aio_pty_cleanup(void *arg)
+{
+ struct aio_pty_arg *apa;
+
+ close(apa->apa_read_fd);
+ close(apa->apa_write_fd);
+};
+
+#define PTY_LEN 256
+#define PTY_TIMEOUT 30
+static int
+aio_pty_test(void)
+{
+ struct aio_pty_arg arg;
+ struct aio_context ac;
+ int read_fd, write_fd;
+ struct termios ts;
+ int error;
+
+ if (openpty(&read_fd, &write_fd, NULL, NULL, NULL) < 0)
+ errx(-1, "FAIL: aio_pty_test: openpty: %s", strerror(errno));
+
+ arg.apa_read_fd = read_fd;
+ arg.apa_write_fd = write_fd;
+
+ if (tcgetattr(write_fd, &ts) < 0) {
+ error = errno;
+ aio_pty_cleanup(&arg);
+ errno = error;
+ errx(-1, "FAIL: aio_pty_test: tcgetattr: %s",
+ strerror(errno));
+ }
+ cfmakeraw(&ts);
+ if (tcsetattr(write_fd, TCSANOW, &ts) < 0) {
+ error = errno;
+ aio_pty_cleanup(&arg);
+ errno = error;
+ errx(-1, "FAIL: aio_pty_test: tcsetattr: %s",
+ strerror(errno));
+ }
+
+ aio_context_init(&ac, "aio_pty_test", read_fd, write_fd, PTY_LEN,
+ PTY_TIMEOUT, aio_pty_cleanup, &arg);
+ aio_write_test(&ac);
+ aio_read_test(&ac);
+
+ aio_pty_cleanup(&arg);
+
+ fprintf(stderr, "PASS: aio_pty_test\n");
+}
+
+static void
+aio_pipe_cleanup(void *arg)
+{
+ int *pipes = arg;
+
+ close(pipes[0]);
+ close(pipes[1]);
+}
+
+#define PIPE_LEN 256
+#define PIPE_TIMEOUT 30
+static int
+aio_pipe_test(void)
+{
+ struct aio_context ac;
+ int pipes[2];
+
+ if (pipe(pipes) < 0)
+ errx(-1, "FAIL: aio_pipe_test: pipe: %s", strerror(errno));
+
+ aio_context_init(&ac, "aio_file_test", pipes[0], pipes[1], PIPE_LEN,
+ PIPE_TIMEOUT, aio_pipe_cleanup, pipes);
+ aio_write_test(&ac);
+ aio_read_test(&ac);
+
+ aio_pipe_cleanup(pipes);
+
+ fprintf(stderr, "PASS: aio_pipe_test\n");
+}
+
+struct aio_md_arg {
+ int ama_mdctl_fd;
+ int ama_unit;
+ int ama_fd;
+};
+
+static void
+aio_md_cleanup(void *arg)
+{
+ struct aio_md_arg *ama;
+ struct md_ioctl mdio;
+ int error;
+
+ ama = arg;
+
+ if (ama->ama_fd != -1)
+ close(ama->ama_fd);
+
+ if (ama->ama_unit != -1) {
+ bzero(&mdio, sizeof(mdio));
+ mdio.md_version = MDIOVERSION;
+ mdio.md_unit = ama->ama_unit;
+ if (ioctl(ama->ama_mdctl_fd, MDIOCDETACH, &mdio) < 0) {
+ error = errno;
+ close(ama->ama_mdctl_fd);
+ errno = error;
+ warnx("FAIL: aio_md_test: MDIOCDETACH: %s",
+ strerror(errno));
+ }
+ }
+
+ close(ama->ama_mdctl_fd);
+}
+
+#define MD_LEN GLOBAL_MAX
+#define MD_TIMEOUT 30
+static int
+aio_md_test(void)
+{
+ int error, fd, i, mdctl_fd, unit;
+ char pathname[PATH_MAX];
+ struct aio_md_arg arg;
+ struct aio_context ac;
+ struct md_ioctl mdio;
+
+ mdctl_fd = open("/dev/" MDCTL_NAME, O_RDWR, 0);
+ if (mdctl_fd < 0)
+ errx(-1, "FAIL: aio_md_test: open(/dev/%s): %s", MDCTL_NAME,
+ strerror(errno));
+
+ bzero(&mdio, sizeof(mdio));
+ mdio.md_version = MDIOVERSION;
+ mdio.md_type = MD_MALLOC;
+ mdio.md_options = MD_AUTOUNIT | MD_COMPRESS;
+ mdio.md_mediasize = GLOBAL_MAX;
+ mdio.md_sectorsize = 512;
+
+ arg.ama_mdctl_fd = mdctl_fd;
+ arg.ama_unit = -1;
+ arg.ama_fd = -1;
+ if (ioctl(mdctl_fd, MDIOCATTACH, &mdio) < 0) {
+ error = errno;
+ aio_md_cleanup(&arg);
+ errno = error;
+ errx(-1, "FAIL: aio_md_test: MDIOCATTACH: %s",
+ strerror(errno));
+ }
+
+ arg.ama_unit = unit = mdio.md_unit;
+ snprintf(pathname, PATH_MAX, "/dev/md%d", unit);
+ fd = open(pathname, O_RDWR);
+ if (fd < 0) {
+ error = errno;
+ aio_md_cleanup(&arg);
+ errno = error;
+ errx(-1, "FAIL: aio_md_test: open(%s): %s", pathname,
+ strerror(errno));
+ }
+ arg.ama_fd = fd;
+
+ aio_context_init(&ac, "aio_md_test", fd, fd, MD_LEN, MD_TIMEOUT,
+ aio_md_cleanup, &arg);
+ aio_write_test(&ac);
+ aio_read_test(&ac);
+
+ aio_md_cleanup(&arg);
+
+ fprintf(stderr, "PASS: aio_md_test\n");
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ aio_sigsys_setup();
+ aio_file_test();
+ aio_fifo_test();
+ aio_unix_socketpair_test();
+ aio_pty_test();
+ aio_pipe_test();
+ if (geteuid() == 0)
+ aio_md_test();
+ else
+ fprintf(stderr, "WARNING: aio_md_test: skipped as euid "
+ "!= 0\n");
+}
diff --git a/tools/regression/aio/kqueue/Makefile b/tools/regression/aio/kqueue/Makefile
new file mode 100644
index 0000000..ba0fd68
--- /dev/null
+++ b/tools/regression/aio/kqueue/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+PROG= aio_kqueue
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/aio/kqueue/aio_kqueue.c b/tools/regression/aio/kqueue/aio_kqueue.c
new file mode 100644
index 0000000..1c0089f
--- /dev/null
+++ b/tools/regression/aio/kqueue/aio_kqueue.c
@@ -0,0 +1,197 @@
+/*-
+ * Copyright (C) 2005 IronPort Systems, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Note: it is a good idea to run this against a physical drive to
+ * exercise the physio fast path (ie. aio_kqueue /dev/<something safe>)
+ */
+
+#include <aio.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+#define PATH_TEMPLATE "/tmp/aio.XXXXXXXXXX"
+
+#define MAX 128
+#define MAX_RUNS 300
+/* #define DEBUG */
+
+main(int argc, char *argv[]){
+ int fd;
+ struct aiocb *iocb[MAX], *kq_iocb;
+ int i, result, run, error, j;
+ char buffer[32768];
+ int kq = kqueue();
+ struct kevent ke, kq_returned;
+ struct timespec ts;
+ int cancel, pending, tmp_file = 0, failed = 0;
+ char *file, pathname[sizeof(PATH_TEMPLATE)-1];
+
+ if (kq < 0) {
+ perror("No kqeueue\n");
+ exit(1);
+ }
+
+ if (argc == 1) {
+ strcpy(pathname, PATH_TEMPLATE);
+ fd = mkstemp(pathname);
+ file = pathname;
+ tmp_file = 1;
+ } else {
+ file = argv[1];
+ fd = open(file, O_RDWR|O_CREAT, 0666);
+ }
+ if (fd < 0){
+ fprintf(stderr, "Can't open %s\n", file);
+ perror("");
+ exit(1);
+ }
+
+ for (run = 0; run < MAX_RUNS; run++){
+#ifdef DEBUG
+ printf("Run %d\n", run);
+#endif
+ for(i = 0; i < MAX; i++) {
+ iocb[i] = (struct aiocb *)malloc(sizeof(struct aiocb));
+ bzero(iocb[i], sizeof(struct aiocb));
+ }
+
+ pending = 0;
+ for(i = 0; i < MAX; i++) {
+ pending++;
+ iocb[i]->aio_nbytes = sizeof(buffer);
+ iocb[i]->aio_buf = buffer;
+ iocb[i]->aio_fildes = fd;
+ iocb[i]->aio_offset = iocb[i]->aio_nbytes * i * run;
+
+ iocb[i]->aio_sigevent.sigev_notify_kqueue = kq;
+ iocb[i]->aio_sigevent.sigev_value.sival_ptr = iocb[i];
+ iocb[i]->aio_sigevent.sigev_notify = SIGEV_KEVENT;
+
+ result = aio_write(iocb[i]);
+ if (result != 0) {
+ perror("aio_write");
+ printf("Result %d iteration %d\n",result, i);
+ exit(1);
+ }
+#ifdef DEBUG
+ printf("WRITE %d is at %p\n", i, iocb[i]);
+#endif
+ result = rand();
+ if (result < RAND_MAX/32) {
+ if (result > RAND_MAX/64) {
+ result = aio_cancel(fd, iocb[i]);
+#ifdef DEBUG
+ printf("Cancel %d %p result %d\n", i, iocb[i], result);
+#endif
+ if (result == AIO_CANCELED) {
+ aio_return(iocb[i]);
+ iocb[i]=NULL;
+ pending--;
+ }
+ }
+ }
+ }
+ cancel = MAX - pending;
+
+ i = 0;
+ while(pending) {
+ for(;;) {
+ bzero(&ke, sizeof(ke));
+ bzero(&kq_returned, sizeof(ke));
+ ts.tv_sec = 0;
+ ts.tv_nsec = 1;
+ result = kevent(kq, NULL, 0,
+ &kq_returned, 1, &ts);
+ error = errno;
+ if (result < 0) {
+ perror("kevent error: ");
+ }
+ kq_iocb = kq_returned.udata;
+#ifdef DEBUG
+ printf("kevent %d %d errno %d return.ident %p "
+ "return.data %p return.udata %p %p\n",
+ i, result, error,
+ kq_returned.ident, kq_returned.data,
+ kq_returned.udata,
+ kq_iocb);
+#endif
+
+ if(kq_iocb)
+ break;
+#ifdef DEBUG
+ printf("Try again left %d out of %d %d\n",pending, MAX, cancel);
+#endif
+ }
+
+ for(j = 0; j < MAX; j++) {
+ if (iocb[j] == kq_iocb) {
+ break;
+ }
+ }
+#ifdef DEBUG
+ printf("kq_iocb %p\n", kq_iocb);
+
+ printf("Error Result for %d is %d pending %d\n", j, result, pending);
+#endif
+ result = aio_return(kq_iocb);
+#ifdef DEBUG
+ printf("Return Result for %d is %d\n", j, result);
+ printf("\n");
+#endif
+ if (result != sizeof(buffer)) {
+ printf("FAIL: run %d, operation %d, result %d (errno=%d) should be %d\n", run, pending, result, errno, sizeof(buffer));
+ failed = 1;
+ } else {
+ printf("PASS: run %d, left %d\n", run, pending - 1);
+ }
+
+ free(kq_iocb);
+ iocb[j] = NULL;
+ pending--;
+ i++;
+ }
+ }
+
+ if (tmp_file) {
+ unlink(pathname);
+ }
+
+ if (failed) {
+ printf("FAIL: Atleast one\n");
+ exit(1);
+ } else {
+ printf("PASS: All\n");
+ exit(0);
+ }
+}
diff --git a/tools/regression/aio/kqueue/lio/Makefile b/tools/regression/aio/kqueue/lio/Makefile
new file mode 100644
index 0000000..77377e5
--- /dev/null
+++ b/tools/regression/aio/kqueue/lio/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+PROG= lio_kqueue
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/aio/kqueue/lio/lio_kqueue.c b/tools/regression/aio/kqueue/lio/lio_kqueue.c
new file mode 100644
index 0000000..b486ec3
--- /dev/null
+++ b/tools/regression/aio/kqueue/lio/lio_kqueue.c
@@ -0,0 +1,242 @@
+/*-
+ * Copyright (C) 2005 IronPort Systems, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Note: it is a good idea to run this against a physical drive to
+ * exercise the physio fast path (ie. lio_kqueue /dev/<something safe>)
+ * This will ensure op's counting is correct. It is currently broken.
+ *
+ * Also note that LIO & kqueue is not implemented in FreeBSD yet, LIO
+ * is also broken with respect to op's and some paths.
+ *
+ * A patch to make this work is at:
+ * http://www.ambrisko.com/doug/listio_kqueue/listio_kqueue.patch
+ */
+
+#include <aio.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+#define PATH_TEMPLATE "/tmp/aio.XXXXXXXXXX"
+
+#define LIO_MAX 5
+#define MAX LIO_MAX * 16
+#define MAX_RUNS 300
+
+main(int argc, char *argv[]){
+ int fd;
+ struct aiocb *iocb[MAX], *kq_iocb;
+ struct aiocb **lio[LIO_MAX], **lio_element, **kq_lio;
+ int i, result, run, error, j, k;
+ char buffer[32768];
+ int kq = kqueue();
+ struct kevent ke, kq_returned;
+ struct timespec ts;
+ struct sigevent sig;
+ time_t time1, time2;
+ char *file, pathname[sizeof(PATH_TEMPLATE)-1];
+ int tmp_file = 0, failed = 0;
+
+ if (kq < 0) {
+ perror("No kqeueue\n");
+ exit(1);
+ }
+
+ if (argc == 1) {
+ strcpy(pathname, PATH_TEMPLATE);
+ fd = mkstemp(pathname);
+ file = pathname;
+ tmp_file = 1;
+ } else {
+ file = argv[1];
+ fd = open(file, O_RDWR|O_CREAT, 0666);
+ }
+ if (fd < 0){
+ fprintf(stderr, "Can't open %s\n", argv[1]);
+ perror("");
+ exit(1);
+ }
+
+#ifdef DEBUG
+ printf("Hello kq %d fd %d\n", kq, fd);
+#endif
+
+ for (run = 0; run < MAX_RUNS; run++){
+#ifdef DEBUG
+ printf("Run %d\n", run);
+#endif
+ for (j = 0; j < LIO_MAX; j++) {
+ lio[j] = (struct aiocb **)
+ malloc(sizeof(struct aiocb *) * MAX/LIO_MAX);
+ for(i = 0; i < MAX / LIO_MAX; i++) {
+ k = (MAX / LIO_MAX * j) + i;
+ lio_element = lio[j];
+ lio[j][i] = iocb[k] = (struct aiocb *)
+ malloc(sizeof(struct aiocb));
+ bzero(iocb[k], sizeof(struct aiocb));
+ iocb[k]->aio_nbytes = sizeof(buffer);
+ iocb[k]->aio_buf = buffer;
+ iocb[k]->aio_fildes = fd;
+ iocb[k]->aio_offset
+ = iocb[k]->aio_nbytes * k * (run + 1);
+
+#ifdef DEBUG
+ printf("hello iocb[k] %d\n",
+ iocb[k]->aio_offset);
+#endif
+ iocb[k]->aio_lio_opcode = LIO_WRITE;
+ }
+ sig.sigev_notify_kqueue = kq;
+ sig.sigev_value.sival_ptr = lio[j];
+ sig.sigev_notify = SIGEV_KEVENT;
+ time(&time1);
+ result = lio_listio(LIO_NOWAIT, lio[j],
+ MAX / LIO_MAX, &sig);
+ error = errno;
+ time(&time2);
+#ifdef DEBUG
+ printf("Time %d %d %d result -> %d\n",
+ time1, time2, time2-time1, result);
+#endif
+ if (result != 0) {
+ errno = error;
+ perror("list_listio");
+ printf("FAIL: Result %d iteration %d\n",result, j);
+ exit(1);
+ }
+#ifdef DEBUG
+ printf("write %d is at %p\n", j, lio[j]);
+#endif
+ }
+
+ for(i = 0; i < LIO_MAX; i++) {
+ for(j = LIO_MAX - 1; j >=0; j--) {
+ if (lio[j])
+ break;
+ }
+
+ for(;;) {
+ bzero(&ke, sizeof(ke));
+ bzero(&kq_returned, sizeof(ke));
+ ts.tv_sec = 0;
+ ts.tv_nsec = 1;
+#ifdef DEBUG
+ printf("FOO lio %d -> %p\n", j, lio[j]);
+#endif
+ EV_SET(&ke, (uintptr_t)lio[j],
+ EVFILT_LIO, EV_ONESHOT, 0, 0, iocb[j]);
+ result = kevent(kq, NULL, 0,
+ &kq_returned, 1, &ts);
+ error = errno;
+ if (result < 0) {
+ perror("kevent error: ");
+ }
+ kq_lio = kq_returned.udata;
+#ifdef DEBUG
+ printf("kevent %d %d errno %d return.ident %p "
+ "return.data %p return.udata %p %p\n",
+ i, result, error,
+ kq_returned.ident, kq_returned.data,
+ kq_returned.udata,
+ lio[j]);
+#endif
+
+ if(kq_lio)
+ break;
+#ifdef DEBUG
+ printf("Try again\n");
+#endif
+ }
+
+#ifdef DEBUG
+ printf("lio %p\n", lio);
+#endif
+
+ for (j = 0; j < LIO_MAX; j++) {
+ if (lio[j] == kq_lio) {
+ break;
+ }
+ }
+ if (j == LIO_MAX) {
+ printf("FAIL:\n");
+ exit(1);
+ }
+
+#ifdef DEBUG
+ printf("Error Result for %d is %d\n", j, result);
+#endif
+ if (result < 0) {
+ printf("FAIL: run %d, operation %d result %d \n", run, LIO_MAX - i -1, result);
+ failed = 1;
+ } else {
+ printf("PASS: run %d, operation %d result %d \n", run, LIO_MAX - i -1, result);
+ }
+ for(k = 0; k < MAX / LIO_MAX; k++){
+ result = aio_return(kq_lio[k]);
+#ifdef DEBUG
+ printf("Return Resulto for %d %d is %d\n", j, k, result);
+#endif
+ if (result != sizeof(buffer)) {
+ printf("FAIL: run %d, operation %d sub-opt %d result %d (errno=%d) should be %d\n",
+ run, LIO_MAX - i -1, k, result, errno, sizeof(buffer));
+ } else {
+ printf("PASS: run %d, operation %d sub-opt %d result %d\n",
+ run, LIO_MAX - i -1, k, result);
+ }
+ }
+#ifdef DEBUG
+ printf("\n");
+#endif
+
+ for(k = 0; k < MAX / LIO_MAX; k++) {
+ free(lio[j][k]);
+ }
+ free(lio[j]);
+ lio[j] = NULL;
+ }
+ }
+#ifdef DEBUG
+ printf("Done\n");
+#endif
+
+ if (tmp_file) {
+ unlink(pathname);
+ }
+
+ if (failed) {
+ printf("FAIL: Atleast one\n");
+ exit(1);
+ } else {
+ printf("PASS: All\n");
+ exit(0);
+ }
+}
diff --git a/tools/regression/atm/Funcs.sh b/tools/regression/atm/Funcs.sh
new file mode 100644
index 0000000..c981f10
--- /dev/null
+++ b/tools/regression/atm/Funcs.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $FreeBSD$
+
+fatal() {
+ echo -e "$*" >&2
+ exit 1
+}
+
+msg() {
+ echo -e "$*" >&2
+}
+
+usage1() {
+ msg "Usage: RunTest.sh [-hq] [-b <localbase>]"
+ msg "Options:"
+ msg " -h show this info"
+ msg " -b <localbase> localbase if not /usr/local"
+ msg " -q be quite"
+ msg " -u run user space test, not kernel"
+ exit 0
+}
+
+parse_options() {
+ args=`getopt b:hqu $*`
+ if [ $? -ne 0 ] ; then
+ fatal "Usage: $0 [-qu] [-b <localbase>]"
+ fi
+
+ options=""
+ set -- $args
+ for i
+ do
+ case "$i"
+ in
+
+ -h) usage1;;
+ -u|-q) options="$options $i"; shift;;
+ -b) LOCALBASE="$2"; shift; shift;;
+ --) shift; break;;
+ esac
+ done
+
+ if [ "$LOCALBASE" = "" ] ; then
+ LOCALBASE="/usr/local"
+
+ pkg_info -I atmsupport-\* 2>/dev/null >/dev/null
+ if [ $? -ne 0 ] ; then
+ fatal "Atmsupport package not installed. \
+Goto /usr/ports/net/atmsupport,\ntype 'make ; make install ; make clean' \
+and re-run this script"
+ fi
+ fi
+}
diff --git a/tools/regression/atm/README b/tools/regression/atm/README
new file mode 100644
index 0000000..509a08d
--- /dev/null
+++ b/tools/regression/atm/README
@@ -0,0 +1,17 @@
+$FreeBSD$
+
+This directory contains tests for the ATM stuff. Specific tests for HARP
+are in the harp subdirectory and are not automatically run. All
+other tests can be run from the top-level or from their sub-directories by
+starting RunTest.sh.
+
+These tests require ports/net/atmsupport to be installed - the
+scripts will remind you if they cannot find the package.
+
+harp HARP tests
+proto_sscfu test suite for the SSCF at the user interface
+proto_sscop test suite for the SSCOP protocol
+proto_uni test suite for the UNI protocol
+proto_cc test suite for the call control function
+
+harti@freebsd.org
diff --git a/tools/regression/atm/RunTest.sh b/tools/regression/atm/RunTest.sh
new file mode 100644
index 0000000..90f6965
--- /dev/null
+++ b/tools/regression/atm/RunTest.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+# $FreeBSD$
+
+. ./Funcs.sh
+
+#
+# Just check the legality of the options and pass them along
+#
+args=`getopt b:hq $*`
+if [ $? -ne 0 ] ; then
+ fatal "Usage: $0 [-q] [-b <localbase>]"
+fi
+
+usage() {
+ msg "Usage: RunTest.sh [-hq] [-b <localbase>]"
+ msg "Options:"
+ msg " -h show this info"
+ msg " -b <localbase> localbase if not /usr/local"
+ msg " -q be quite"
+ exit 0
+}
+
+options=""
+set -- $args
+for i
+do
+ case "$i"
+ in
+
+ -h) usage;;
+ -b) options="$options $i $2" ; shift; shift;;
+ -q) options="$options $i" ; shift;;
+ --) shift; break;;
+ esac
+done
+
+(cd proto_sscop ; sh ./RunTest.sh -u $options)
+(cd proto_sscfu ; sh ./RunTest.sh -u $options)
+(cd proto_uni ; sh ./RunTest.sh -u $options)
+(cd proto_cc ; sh ./RunTest.sh -u $options)
+
+(cd proto_sscop ; sh ./RunTest.sh $options)
+(cd proto_sscfu ; sh ./RunTest.sh $options)
+(cd proto_uni ; sh ./RunTest.sh $options)
+(cd proto_cc ; sh ./RunTest.sh $options)
diff --git a/tools/regression/atm/harp/atm_udp.ng b/tools/regression/atm/harp/atm_udp.ng
new file mode 100644
index 0000000..329b696
--- /dev/null
+++ b/tools/regression/atm/harp/atm_udp.ng
@@ -0,0 +1,155 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+err() {
+ echo "$*" >&2
+}
+usage() {
+ err "Usage: `basename $0` atmindex loc_ip udp_port rem_ip udp_port [pref_iface]"
+ err " or: `basename $0` flush"
+ exit $1
+}
+
+args=`getopt ed $*`
+if [ $? != 0 ] ; then
+ usage 2
+fi
+set -- $args
+
+debug_enable=0
+
+for i
+do
+ case "$i"
+ in
+ -e)
+ debug_enable=1
+ shift;;
+ -d)
+ debug_enable=-1
+ shift;;
+ --)
+ shift ; break;;
+ esac
+done
+
+if [ $# -lt 1 ] ; then
+ err "Missing arguments"
+ usage 1
+fi
+
+#
+# Handle debug flags
+#
+case ${debug_enable} in
+
+1)
+ #
+ # Enable all the HARP debugging features
+ #
+ sysctl -w net.harp.atm.atm_debug=1
+ sysctl -w net.harp.atm.atm_dev_print=1
+ sysctl -w net.harp.atm.atm_print_data=1
+ sysctl -w net.harp.ip.ipatm_print=1
+ sysctl -w net.harp.spans.spanscls_print=1
+ sysctl -w net.harp.uni.uniarp_print=1
+ sysctl -w net.harp.uni.unisig_print_msg=2
+ ;;
+
+-1)
+ #
+ # Disable all the HARP debugging features
+ #
+ sysctl -w net.harp.atm.atm_debug=0
+ sysctl -w net.harp.atm.atm_dev_print=0
+ sysctl -w net.harp.atm.atm_print_data=0
+ sysctl -w net.harp.ip.ipatm_print=0
+ sysctl -w net.harp.spans.spanscls_print=0
+ sysctl -w net.harp.uni.uniarp_print=0
+ sysctl -w net.harp.uni.unisig_print_msg=0
+ ;;
+esac
+
+if [ "${1}" = "flush" ] ; then
+ #
+ # Remove all atmpif nodes
+ #
+ for i in `ngctl list | grep atmpif | awk '{print $6}'` ; do
+ ngctl shutdown [$i]:
+ done
+ exit 0
+fi
+
+ID=${1}
+
+if [ $# -lt 5 -o $# -gt 6 ] ; then
+ err "wrong number of arguments"
+ usage 1
+fi
+
+LOC_IP=${2}
+LOC_UDP_PORT=${3}
+REM_IP=${4}
+REM_UDP_PORT=${5}
+PREF_IFACE=${6}
+
+if [ "${LOC_IP}" = "" -o "${LOC_UDP_PORT}" = "" -o \
+ "${REM_IP}" = "" -o "${REM_UDP_PORT}" = "" ] ; then
+ err "bad argument"
+ usage 1
+fi
+
+#
+# Default interface prefix: atmX
+#
+if [ "${PREF_IFACE}" = "" ] ; then
+ PREF_IFACE="atm"
+fi
+
+# Create the ATM PIF (Physical Interface) vatmpifXX
+#
+ngctl -f - <<EOF
+ mkpeer atmpif dummy link
+ name .:dummy vatmpif${ID}
+EOF
+
+# Attach a UDP socket to the ``link'' hook of the atm interface node
+# using the ng_ksocket(8) node type.
+#
+echo ngctl mkpeer vatmpif${ID}: ksocket link inet/dgram/udp
+ngctl -d mkpeer vatmpif${ID}: ksocket link inet/dgram/udp
+
+# Enable HARP debugging of the API between the Netgraph node and the
+# HARP stack
+#
+ngctl msg vatmpif${ID}: setconfig { debug=1 pcr=353207 macaddr=00:09:c0:00:00:cd }
+
+# Bind the UDP socket to the local external IP address and port
+#
+echo ngctl msg vatmpif${ID}:link bind inet/${LOC_IP}:${LOC_UDP_PORT}
+ngctl -d msg vatmpif${ID}:link bind inet/${LOC_IP}:${LOC_UDP_PORT}
+
+# Connect the UDP socket to the peer's external IP address and port
+#
+echo ngctl msg vatmpif${ID}:link connect inet/${REM_IP}:${REM_UDP_PORT}
+ngctl -d msg vatmpif${ID}:link connect inet/${REM_IP}:${REM_UDP_PORT}
+
+# Display the atm interfaces:
+#
+atm show config
+
+# Get the ATM device
+#
+ATMPIF=`atm show config | grep ^hva | tail -1 | cut -f 1 -d " "`
+
+# Open a PVC
+#
+atm set netif ${ATMPIF} ${PREF_IFACE} 5
+atm attach ${ATMPIF} sigpvc
+ifconfig ${PREF_IFACE}0 1.${ID}.1.1/16
+atm add pvc ${ATMPIF} ${ID} 40 AAL5 null IP ${PREF_IFACE}0 1.${ID}.2.2
+atm show ipvcc
+atm show vcc
+atm show stats vcc
+atm show stats interface ${ATMPIF}
diff --git a/tools/regression/atm/harp/memory_leak.sh b/tools/regression/atm/harp/memory_leak.sh
new file mode 100644
index 0000000..ac6cebb
--- /dev/null
+++ b/tools/regression/atm/harp/memory_leak.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# Perform memory leak test
+#
+
+while [ 1 ] ; do
+ ./atm_udp.ng 1 127.0.0.1 5001 127.0.0.1 5002
+ sleep 2
+ ./atm_udp.ng flush
+ vmstat -m
+done
diff --git a/tools/regression/atm/proto_cc/RunTest.sh b/tools/regression/atm/proto_cc/RunTest.sh
new file mode 100644
index 0000000..f6c7ce0
--- /dev/null
+++ b/tools/regression/atm/proto_cc/RunTest.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+. ../Funcs.sh
+
+parse_options $*
+
+DATA=$LOCALBASE/share/atmsupport/testsuite_cc
+
+$LOCALBASE/bin/ats_cc $options $DATA/CC_Funcs $DATA/CC_??_??
diff --git a/tools/regression/atm/proto_sscfu/RunTest.sh b/tools/regression/atm/proto_sscfu/RunTest.sh
new file mode 100644
index 0000000..2f08659
--- /dev/null
+++ b/tools/regression/atm/proto_sscfu/RunTest.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# $FreeBSD$
+
+. ../Funcs.sh
+
+parse_options $*
+
+DATA=$LOCALBASE/share/atmsupport/testsuite_sscfu
+
+$LOCALBASE/bin/ats_sscfu $options $DATA/Funcs $DATA/EST* $DATA/REL* \
+$DATA/REC* $DATA/RES* $DATA/DATA* $DATA/UDATA*
diff --git a/tools/regression/atm/proto_sscop/RunTest.sh b/tools/regression/atm/proto_sscop/RunTest.sh
new file mode 100644
index 0000000..60812de
--- /dev/null
+++ b/tools/regression/atm/proto_sscop/RunTest.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+. ../Funcs.sh
+
+parse_options $*
+
+DATA=$LOCALBASE/share/atmsupport/testsuite_sscop
+
+$LOCALBASE/bin/ats_sscop $options $DATA/Funcs $DATA/S*
diff --git a/tools/regression/atm/proto_uni/RunTest.sh b/tools/regression/atm/proto_uni/RunTest.sh
new file mode 100644
index 0000000..8b9c9e5
--- /dev/null
+++ b/tools/regression/atm/proto_uni/RunTest.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+. ../Funcs.sh
+
+parse_options $*
+
+DATA=$LOCALBASE/share/atmsupport/testsuite_uni
+
+$LOCALBASE/bin/ats_sig $options $DATA/Funcs $DATA/L3MU_Funcs $DATA/Restart.??? \
+ $DATA/Unknown.??? $DATA/Incoming.??? $DATA/MpOut.??? $DATA/MpIn.??? \
+ $DATA/L???_??_??
diff --git a/tools/regression/audit/audit_pipe_ioctl/Makefile b/tools/regression/audit/audit_pipe_ioctl/Makefile
new file mode 100644
index 0000000..9ba9e74
--- /dev/null
+++ b/tools/regression/audit/audit_pipe_ioctl/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= audit_pipe_ioctl
+NO_MAN= yes
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/audit/audit_pipe_ioctl/audit_pipe_ioctl.c b/tools/regression/audit/audit_pipe_ioctl/audit_pipe_ioctl.c
new file mode 100644
index 0000000..7594ca8
--- /dev/null
+++ b/tools/regression/audit/audit_pipe_ioctl/audit_pipe_ioctl.c
@@ -0,0 +1,143 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * This software was developed by Robert Watson for the TrustedBSD Project.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Simple audit pipe regression test to confirm that the ioctls for queue
+ * limit information basically work. No attempt is made to validate the
+ * queue length returned, however.
+ */
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+
+#include <security/audit/audit_ioctl.h>
+
+#include <err.h>
+#include <fcntl.h>
+
+int
+main(int argc, char *argv[])
+{
+ u_int len, minlen, maxlen;
+ u_int64_t astat;
+ int fd;
+
+ fd = open("/dev/auditpipe", O_RDONLY);
+ if (fd < 0)
+ err(-1, "/dev/auditpipe");
+
+ /*
+ * First, test that we can read the queue length, queue limit, and
+ * bounds on queue length limits.
+ */
+ len = (u_int)(-1);
+ if (ioctl(fd, AUDITPIPE_GET_QLEN, &len) < 0)
+ err(-1, "AUDITPIPE_GET_QLEN");
+ if (len == (u_int)(-1))
+ errx(-1, "AUDITPIPE_GET_QLEN: unchanged");
+
+ minlen = (u_int)(-1);
+ if (ioctl(fd, AUDITPIPE_GET_QLIMIT_MIN, &minlen) < 0)
+ err(-1, "AUDITPIPE_GET_QLIMIT_MIN");
+ if (minlen == (u_int)(-1))
+ errx(-1, "AUDITPIPE_GET_QLIMIT_MIN: unchanged");
+
+ maxlen = (u_int)(-1);
+ if (ioctl(fd, AUDITPIPE_GET_QLIMIT_MAX, &maxlen) < 0)
+ err(-1, "AUDITPIPE_GET_QLIMIT_MAX");
+ if (maxlen == (u_int)(-1))
+ errx(-1, "AUDITPIPE_GET_QLIMIT_MAX: unchanged");
+
+ len = (u_int)(-1);
+ if (ioctl(fd, AUDITPIPE_GET_QLIMIT, &len) < 0)
+ err(-1, "AUDITPIPE_GET_QLIMIT");
+ if (len == (u_int)(-1))
+ errx(-1, "AUDITPIPE_GET_QLIMIT: unchanged");
+
+ if (!(len >= minlen))
+ errx(-1, "queue length < minlen");
+
+ if (!(len <= maxlen))
+ errx(-1, "queue length > maxlen");
+
+ /*
+ * Try setting the queue length to first minimum, then maximum
+ * lengths. Query after each to make sure it changed.
+ */
+ len = minlen;
+ if (ioctl(fd, AUDITPIPE_SET_QLIMIT, &len) < 0)
+ err(-1, "AUDITPIPE_SET_QLIMIT(min)");
+
+ if (ioctl(fd, AUDITPIPE_GET_QLIMIT, &len) < 0)
+ err(-1, "AUDITPIPE_GET_QLIMIT");
+
+ if (len != minlen)
+ errx(-1, "set to minlen didn't work");
+
+ len = maxlen;
+ if (ioctl(fd, AUDITPIPE_SET_QLIMIT, &len) < 0)
+ err(-1, "AUDITPIPE_SET_QLIMIT(max)");
+
+ if (ioctl(fd, AUDITPIPE_GET_QLIMIT, &len) < 0)
+ err(-1, "AUDITPIPE_GETQLIMIT");
+
+ if (len != maxlen)
+ errx(-1, "set to maxlen didn't work");
+
+ /*
+ * Check that we can query the defined stats. No attempt to
+ * validate.
+ */
+ astat = (u_int64_t)(int64_t)(-1);
+ if (ioctl(fd, AUDITPIPE_GET_INSERTS, &astat) < 0)
+ err(-1, "AUDITPIPE_GET_INSERTS");
+ if (astat == (u_int64_t)(int64_t)(-1))
+ errx(-1, "AUDITPIPE_GET_INSERTS: unchanged");
+
+ astat = (u_int64_t)(int64_t)(-1);
+ if (ioctl(fd, AUDITPIPE_GET_READS, &astat) < 0)
+ err(-1, "AUDITPIPE_GET_READS");
+ if (astat == (u_int64_t)(int64_t)(-1))
+ errx(-1, "AUDITPIPE_GET_READS: unchanged");
+
+ astat = (u_int64_t)(int64_t)(-1);
+ if (ioctl(fd, AUDITPIPE_GET_DROPS, &astat) < 0)
+ err(-1, "AUDITPIPE_GET_DROPS");
+ if (astat == (u_int64_t)(int64_t)(-1))
+ errx(-1, "AUDITPIPE_GET_DROPS: unchanged");
+
+ astat = (u_int64_t)(int64_t)(-1);
+ if (ioctl(fd, AUDITPIPE_GET_TRUNCATES, &astat) < 0)
+ err(-1, "AUDITPIPE_GET_TRUNCATES");
+ if (astat == (u_int64_t)(int64_t)(-1))
+ errx(-1, "AUDITPIPE_GET_TRUNCATES: unchanged");
+
+ return (0);
+}
diff --git a/tools/regression/bin/sh/Makefile b/tools/regression/bin/sh/Makefile
new file mode 100644
index 0000000..2c9ca59
--- /dev/null
+++ b/tools/regression/bin/sh/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ sh regress.sh
diff --git a/tools/regression/bin/sh/builtins/alias.0 b/tools/regression/bin/sh/builtins/alias.0
new file mode 100644
index 0000000..39c748a
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/alias.0
@@ -0,0 +1,6 @@
+# $FreeBSD$
+set -e
+
+unalias -a
+alias foo=bar
+alias
diff --git a/tools/regression/bin/sh/builtins/alias.0.stdout b/tools/regression/bin/sh/builtins/alias.0.stdout
new file mode 100644
index 0000000..1d5d296
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/alias.0.stdout
@@ -0,0 +1 @@
+foo='bar'
diff --git a/tools/regression/bin/sh/builtins/alias.1 b/tools/regression/bin/sh/builtins/alias.1
new file mode 100644
index 0000000..31403dc
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/alias.1
@@ -0,0 +1,3 @@
+# $FreeBSD$
+unalias -a
+alias foo
diff --git a/tools/regression/bin/sh/builtins/alias.1.stderr b/tools/regression/bin/sh/builtins/alias.1.stderr
new file mode 100644
index 0000000..5ea01d5
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/alias.1.stderr
@@ -0,0 +1 @@
+alias: foo not found
diff --git a/tools/regression/bin/sh/builtins/command1.0 b/tools/regression/bin/sh/builtins/command1.0
new file mode 100644
index 0000000..fd0afdf
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/command1.0
@@ -0,0 +1,5 @@
+# $FreeBSD$
+true() {
+ false
+}
+command true
diff --git a/tools/regression/bin/sh/builtins/command2.0 b/tools/regression/bin/sh/builtins/command2.0
new file mode 100644
index 0000000..ff7b5f2
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/command2.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+PATH=
+command -p cat < /dev/null
diff --git a/tools/regression/bin/sh/builtins/command3.0 b/tools/regression/bin/sh/builtins/command3.0
new file mode 100644
index 0000000..f4ca120
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/command3.0
@@ -0,0 +1,13 @@
+# $FreeBSD$
+command -v ls
+command -v true
+command -v /bin/ls
+
+fun() {
+}
+command -v fun
+command -v break
+command -v if
+
+alias foo=bar
+command -v foo
diff --git a/tools/regression/bin/sh/builtins/command3.0.stdout b/tools/regression/bin/sh/builtins/command3.0.stdout
new file mode 100644
index 0000000..239c53f
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/command3.0.stdout
@@ -0,0 +1,7 @@
+/bin/ls
+true
+/bin/ls
+fun
+break
+if
+alias foo='bar '
diff --git a/tools/regression/bin/sh/builtins/command4.127 b/tools/regression/bin/sh/builtins/command4.127
new file mode 100644
index 0000000..c66f60f
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/command4.127
@@ -0,0 +1,2 @@
+# $FreeBSD$
+command -v nonexisting
diff --git a/tools/regression/bin/sh/builtins/command5.0 b/tools/regression/bin/sh/builtins/command5.0
new file mode 100644
index 0000000..d94d2f4
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/command5.0
@@ -0,0 +1,14 @@
+# $FreeBSD$
+command -V ls
+command -V true
+command -V /bin/ls
+
+fun() {
+}
+command -V fun
+command -V break
+command -V if
+command -V {
+
+alias foo=bar
+command -V foo
diff --git a/tools/regression/bin/sh/builtins/command5.0.stdout b/tools/regression/bin/sh/builtins/command5.0.stdout
new file mode 100644
index 0000000..9f6427f
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/command5.0.stdout
@@ -0,0 +1,8 @@
+ls is /bin/ls
+true is a shell builtin
+/bin/ls is /bin/ls
+fun is a shell function
+break is a shell builtin
+if is a shell keyword
+{ is a shell keyword
+foo is an alias for bar
diff --git a/tools/regression/bin/sh/builtins/hash1.0 b/tools/regression/bin/sh/builtins/hash1.0
new file mode 100644
index 0000000..45cc300
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/hash1.0
@@ -0,0 +1,5 @@
+# $FreeBSD$
+cat /dev/null
+hash
+hash -r
+hash
diff --git a/tools/regression/bin/sh/builtins/hash1.0.stdout b/tools/regression/bin/sh/builtins/hash1.0.stdout
new file mode 100644
index 0000000..3afc3e7
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/hash1.0.stdout
@@ -0,0 +1 @@
+/bin/cat
diff --git a/tools/regression/bin/sh/builtins/hash2.0 b/tools/regression/bin/sh/builtins/hash2.0
new file mode 100644
index 0000000..e5cd21b
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/hash2.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+hash
+hash cat
+hash
diff --git a/tools/regression/bin/sh/builtins/hash2.0.stdout b/tools/regression/bin/sh/builtins/hash2.0.stdout
new file mode 100644
index 0000000..3afc3e7
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/hash2.0.stdout
@@ -0,0 +1 @@
+/bin/cat
diff --git a/tools/regression/bin/sh/builtins/hash3.0 b/tools/regression/bin/sh/builtins/hash3.0
new file mode 100644
index 0000000..eade0b3
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/hash3.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+hash -v cat
+hash
diff --git a/tools/regression/bin/sh/builtins/hash3.0.stdout b/tools/regression/bin/sh/builtins/hash3.0.stdout
new file mode 100644
index 0000000..a34864c
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/hash3.0.stdout
@@ -0,0 +1,2 @@
+/bin/cat
+/bin/cat
diff --git a/tools/regression/bin/sh/builtins/return1.0 b/tools/regression/bin/sh/builtins/return1.0
new file mode 100644
index 0000000..787e892
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/return1.0
@@ -0,0 +1,7 @@
+# $FreeBSD$
+f() {
+ return 0
+ exit 1
+}
+
+f
diff --git a/tools/regression/bin/sh/builtins/return2.1 b/tools/regression/bin/sh/builtins/return2.1
new file mode 100644
index 0000000..0ef8171
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/return2.1
@@ -0,0 +1,7 @@
+# $FreeBSD$
+f() {
+ true && return 1
+ return 0
+}
+
+f
diff --git a/tools/regression/bin/sh/builtins/return3.1 b/tools/regression/bin/sh/builtins/return3.1
new file mode 100644
index 0000000..605ec68
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/return3.1
@@ -0,0 +1,3 @@
+# $FreeBSD$
+return 1
+exit 0
diff --git a/tools/regression/bin/sh/builtins/type1.0 b/tools/regression/bin/sh/builtins/type1.0
new file mode 100644
index 0000000..c5e4564
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/type1.0
@@ -0,0 +1,8 @@
+# $FreeBSD$
+command -v not-here && exit 1
+command -v /not-here && exit 1
+command -V not-here && exit 1
+command -V /not-here && exit 1
+type not-here && exit 1
+type /not-here && exit 1
+exit 0
diff --git a/tools/regression/bin/sh/builtins/type1.0.stdout b/tools/regression/bin/sh/builtins/type1.0.stdout
new file mode 100644
index 0000000..7853418
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/type1.0.stdout
@@ -0,0 +1,4 @@
+not-here: not found
+/not-here: No such file or directory
+not-here: not found
+/not-here: No such file or directory
diff --git a/tools/regression/bin/sh/builtins/unalias.0 b/tools/regression/bin/sh/builtins/unalias.0
new file mode 100644
index 0000000..34d8d6e
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/unalias.0
@@ -0,0 +1,21 @@
+# $FreeBSD$
+set -e
+
+alias false=true
+false
+unalias false
+false && exit 1
+unalias false && exit 1
+
+alias a1=foo a2=bar
+unalias a1 a2
+unalias a1 && exit 1
+unalias a2 && exit 1
+alias a2=bar
+unalias a1 a2 && exit 1
+
+alias a1=foo a2=bar
+unalias -a
+unalias a1 && exit 1
+unalias a2 && exit 1
+exit 0
diff --git a/tools/regression/bin/sh/builtins/var-assign.0 b/tools/regression/bin/sh/builtins/var-assign.0
new file mode 100644
index 0000000..2e57a31
--- /dev/null
+++ b/tools/regression/bin/sh/builtins/var-assign.0
@@ -0,0 +1,55 @@
+# $FreeBSD$
+IFS=,
+
+SPECIAL="break,\
+ :,\
+ continue,\
+ . /dev/null,
+ eval,
+ exec,
+ export -p,
+ readonly -p,
+ set,
+ shift 0,
+ times,
+ trap,
+ unset foo"
+
+UTILS="alias,\
+ bg,\
+ bind,\
+ cd,\
+ command echo,\
+ echo,\
+ false,\
+ fc -l,\
+ fg,\
+ getopts a var,\
+ hash,\
+ jobs,\
+ printf a,\
+ pwd,\
+ read var < /dev/null,\
+ test,\
+ true,\
+ type ls,\
+ ulimit,\
+ umask,\
+ unalias -a,\
+ wait"
+
+set -e
+
+# For special built-ins variable assignments affect the shell environment.
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+ sh -c "VAR=1; VAR=0 ${cmd}; exit \${VAR}" >/dev/null 2>&1
+done
+
+# For other built-ins and utilites they do not.
+set -- ${UTILS}
+for cmd in "$@"
+do
+ sh -c "VAR=0; VAR=1 ${cmd}; exit \${VAR}" >/dev/null 2>&1
+done
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp1.0 b/tools/regression/bin/sh/errors/bad-parm-exp1.0
new file mode 100644
index 0000000..6e94994
--- /dev/null
+++ b/tools/regression/bin/sh/errors/bad-parm-exp1.0
@@ -0,0 +1,7 @@
+# $FreeBSD$
+false && {
+ ${}
+ ${foo/}
+ ${foo@bar}
+}
+:
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp2.2 b/tools/regression/bin/sh/errors/bad-parm-exp2.2
new file mode 100644
index 0000000..7e13d2b
--- /dev/null
+++ b/tools/regression/bin/sh/errors/bad-parm-exp2.2
@@ -0,0 +1,2 @@
+# $FreeBSD$
+${}
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr b/tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr
new file mode 100644
index 0000000..d027a5a
--- /dev/null
+++ b/tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr
@@ -0,0 +1 @@
+./errors/bad-parm-exp2.2: ${}: Bad substitution
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp3.2 b/tools/regression/bin/sh/errors/bad-parm-exp3.2
new file mode 100644
index 0000000..a5ecba5
--- /dev/null
+++ b/tools/regression/bin/sh/errors/bad-parm-exp3.2
@@ -0,0 +1,2 @@
+# $FreeBSD$
+${foo/}
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr b/tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr
new file mode 100644
index 0000000..ef40251
--- /dev/null
+++ b/tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr
@@ -0,0 +1 @@
+./errors/bad-parm-exp3.2: ${foo/}: Bad substitution
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp4.2 b/tools/regression/bin/sh/errors/bad-parm-exp4.2
new file mode 100644
index 0000000..9eec8d0
--- /dev/null
+++ b/tools/regression/bin/sh/errors/bad-parm-exp4.2
@@ -0,0 +1,2 @@
+# $FreeBSD$
+${foo:@abc}
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr b/tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr
new file mode 100644
index 0000000..89bd80f
--- /dev/null
+++ b/tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr
@@ -0,0 +1 @@
+./errors/bad-parm-exp4.2: ${foo:@...}: Bad substitution
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp5.2 b/tools/regression/bin/sh/errors/bad-parm-exp5.2
new file mode 100644
index 0000000..459281f
--- /dev/null
+++ b/tools/regression/bin/sh/errors/bad-parm-exp5.2
@@ -0,0 +1,2 @@
+# $FreeBSD$
+${/}
diff --git a/tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr b/tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr
new file mode 100644
index 0000000..89b1997
--- /dev/null
+++ b/tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr
@@ -0,0 +1 @@
+./errors/bad-parm-exp5.2: ${/}: Bad substitution
diff --git a/tools/regression/bin/sh/errors/option-error.0 b/tools/regression/bin/sh/errors/option-error.0
new file mode 100644
index 0000000..f599d59
--- /dev/null
+++ b/tools/regression/bin/sh/errors/option-error.0
@@ -0,0 +1,46 @@
+# $FreeBSD$
+IFS=,
+
+SPECIAL="break abc,\
+ continue abc,\
+ .,
+ exit abc,
+ export -x,
+ readonly -x,
+ return abc,
+ set -z,
+ shift abc,
+ trap -y,
+ unset -y"
+
+UTILS="alias -y,\
+ cat -z,\
+ cd abc def,\
+ command break abc,\
+ expr 1 +,\
+ fc -z,\
+ getopts,\
+ hash -z,\
+ jobs -z,\
+ printf,\
+ pwd abc,\
+ read,\
+ test abc =,\
+ ulimit -z,\
+ umask -z,\
+ unalias -z,\
+ wait abc"
+
+# Special built-in utilities must abort on an option or operand error.
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+ sh -c "${cmd}; exit 0" 2>/dev/null && exit 1
+done
+
+# Other utilities must not abort.
+set -- ${UTILS}
+for cmd in "$@"
+do
+ sh -c "${cmd}; exit 0" 2>/dev/null || exit 1
+done
diff --git a/tools/regression/bin/sh/errors/redirection-error.0 b/tools/regression/bin/sh/errors/redirection-error.0
new file mode 100644
index 0000000..d11118a
--- /dev/null
+++ b/tools/regression/bin/sh/errors/redirection-error.0
@@ -0,0 +1,53 @@
+# $FreeBSD$
+IFS=,
+
+SPECIAL="break,\
+ :,\
+ continue,\
+ . /dev/null,
+ eval,
+ exec,
+ export -p,
+ readonly -p,
+ set,
+ shift,
+ times,
+ trap,
+ unset foo"
+
+UTILS="alias,\
+ bg,\
+ bind,\
+ cd,\
+ command echo,\
+ echo,\
+ false,\
+ fc -l,\
+ fg,\
+ getopts a -a,\
+ hash,\
+ jobs,\
+ printf a,\
+ pwd,\
+ read var < /dev/null,\
+ test,\
+ true,\
+ type ls,\
+ ulimit,\
+ umask,\
+ unalias -a,\
+ wait"
+
+# Special built-in utilities must abort on a redirection error.
+set -- ${SPECIAL}
+for cmd in "$@"
+do
+ sh -c "${cmd} > /; exit 0" 2>/dev/null && exit 1
+done
+
+# Other utilities must not abort.
+set -- ${UTILS}
+for cmd in "$@"
+do
+ sh -c "${cmd} > /; exit 0" 2>/dev/null || exit 1
+done
diff --git a/tools/regression/bin/sh/regress.sh b/tools/regression/bin/sh/regress.sh
new file mode 100644
index 0000000..a6889af
--- /dev/null
+++ b/tools/regression/bin/sh/regress.sh
@@ -0,0 +1,37 @@
+# $FreeBSD$
+
+COUNTER=1
+
+do_test() {
+ local c
+ c=${COUNTER}
+ COUNTER=$((COUNTER+1))
+ sh $1 > tmp.stdout 2> tmp.stderr
+ if [ $? -ne $2 ]; then
+ echo "not ok ${c} - ${1} # wrong exit status"
+ rm tmp.stdout tmp.stderr
+ return
+ fi
+ for i in stdout stderr; do
+ if [ -f ${1}.${i} ]; then
+ if ! cmp -s tmp.${i} ${1}.${i}; then
+ echo "not ok ${c} - ${1} # wrong output on ${i}"
+ rm tmp.stdout tmp.stderr
+ return
+ fi
+ elif [ -s tmp.${i} ]; then
+ echo "not ok ${c} - ${1} # wrong output on ${i}"
+ rm tmp.stdout tmp.stderr
+ return
+ fi
+ done
+ echo "ok ${c} - ${1}"
+ rm tmp.stdout tmp.stderr
+}
+
+TESTS=$(find -Es . -regex ".*\.[0-9]+")
+printf "1..%d\n" $(echo ${TESTS} | wc -w)
+
+for i in ${TESTS} ; do
+ do_test ${i} ${i##*.}
+done
diff --git a/tools/regression/bin/sh/regress.t b/tools/regression/bin/sh/regress.t
new file mode 100644
index 0000000..c36d834
--- /dev/null
+++ b/tools/regression/bin/sh/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+sh regress.sh
diff --git a/tools/regression/bin/sh/set-e/and1.0 b/tools/regression/bin/sh/set-e/and1.0
new file mode 100644
index 0000000..607b7c3
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/and1.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+set -e
+true && true
diff --git a/tools/regression/bin/sh/set-e/and2.1 b/tools/regression/bin/sh/set-e/and2.1
new file mode 100644
index 0000000..78e203a
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/and2.1
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+true && false
+exit 0
diff --git a/tools/regression/bin/sh/set-e/and3.0 b/tools/regression/bin/sh/set-e/and3.0
new file mode 100644
index 0000000..9fafb1c
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/and3.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+false && true
+exit 0
diff --git a/tools/regression/bin/sh/set-e/and4.0 b/tools/regression/bin/sh/set-e/and4.0
new file mode 100644
index 0000000..25d0e61
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/and4.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+false && false
+exit 0
diff --git a/tools/regression/bin/sh/set-e/background1.0 b/tools/regression/bin/sh/set-e/background1.0
new file mode 100644
index 0000000..21577f4
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/background1.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+set -e
+false &
diff --git a/tools/regression/bin/sh/set-e/cmd1.0 b/tools/regression/bin/sh/set-e/cmd1.0
new file mode 100644
index 0000000..67fdcbc
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/cmd1.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+set -e
+true
diff --git a/tools/regression/bin/sh/set-e/cmd2.1 b/tools/regression/bin/sh/set-e/cmd2.1
new file mode 100644
index 0000000..7cd8b09
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/cmd2.1
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+false
+exit 0
diff --git a/tools/regression/bin/sh/set-e/elif1.0 b/tools/regression/bin/sh/set-e/elif1.0
new file mode 100644
index 0000000..80c7af6
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/elif1.0
@@ -0,0 +1,5 @@
+# $FreeBSD$
+set -e
+if false; then
+elif false; then
+fi
diff --git a/tools/regression/bin/sh/set-e/elif2.0 b/tools/regression/bin/sh/set-e/elif2.0
new file mode 100644
index 0000000..028938b
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/elif2.0
@@ -0,0 +1,5 @@
+# $FreeBSD$
+set -e
+if false; then
+elif false; false; then
+fi
diff --git a/tools/regression/bin/sh/set-e/for1.0 b/tools/regression/bin/sh/set-e/for1.0
new file mode 100644
index 0000000..67eb718
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/for1.0
@@ -0,0 +1,9 @@
+# $FreeBSD$
+set -e
+f() {
+ for i in a b c; do
+ false
+ true
+ done
+}
+f || true
diff --git a/tools/regression/bin/sh/set-e/func1.0 b/tools/regression/bin/sh/set-e/func1.0
new file mode 100644
index 0000000..3c6b704
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/func1.0
@@ -0,0 +1,7 @@
+# $FreeBSD$
+set -e
+f() {
+ false
+ true
+}
+f || true
diff --git a/tools/regression/bin/sh/set-e/func2.1 b/tools/regression/bin/sh/set-e/func2.1
new file mode 100644
index 0000000..cc76d6e
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/func2.1
@@ -0,0 +1,7 @@
+# $FreeBSD$
+set -e
+f() {
+ false
+ exit 0
+}
+f
diff --git a/tools/regression/bin/sh/set-e/if1.0 b/tools/regression/bin/sh/set-e/if1.0
new file mode 100644
index 0000000..0be254b
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/if1.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+if false; then
+fi
diff --git a/tools/regression/bin/sh/set-e/if2.0 b/tools/regression/bin/sh/set-e/if2.0
new file mode 100644
index 0000000..4955408
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/if2.0
@@ -0,0 +1,7 @@
+# $FreeBSD$
+set -e
+# PR 28852
+if true; then
+ false && true
+fi
+exit 0
diff --git a/tools/regression/bin/sh/set-e/if3.0 b/tools/regression/bin/sh/set-e/if3.0
new file mode 100644
index 0000000..b23d5ba
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/if3.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+if false; false; then
+fi
diff --git a/tools/regression/bin/sh/set-e/not1.0 b/tools/regression/bin/sh/set-e/not1.0
new file mode 100644
index 0000000..21c089a
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/not1.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+! true
+exit 0
diff --git a/tools/regression/bin/sh/set-e/not2.0 b/tools/regression/bin/sh/set-e/not2.0
new file mode 100644
index 0000000..59b9c1c
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/not2.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+set -e
+! false
diff --git a/tools/regression/bin/sh/set-e/or1.0 b/tools/regression/bin/sh/set-e/or1.0
new file mode 100644
index 0000000..c2dcbe9
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/or1.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+set -e
+true || false
diff --git a/tools/regression/bin/sh/set-e/or2.0 b/tools/regression/bin/sh/set-e/or2.0
new file mode 100644
index 0000000..934e2a6
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/or2.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+set -e
+false || true
diff --git a/tools/regression/bin/sh/set-e/or3.1 b/tools/regression/bin/sh/set-e/or3.1
new file mode 100644
index 0000000..7a617a1
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/or3.1
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+false || false
+exit 0
diff --git a/tools/regression/bin/sh/set-e/pipe1.1 b/tools/regression/bin/sh/set-e/pipe1.1
new file mode 100644
index 0000000..c0bad0f
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/pipe1.1
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+true | false
+exit 0
diff --git a/tools/regression/bin/sh/set-e/pipe2.0 b/tools/regression/bin/sh/set-e/pipe2.0
new file mode 100644
index 0000000..1e25566
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/pipe2.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+set -e
+false | true
diff --git a/tools/regression/bin/sh/set-e/return1.0 b/tools/regression/bin/sh/set-e/return1.0
new file mode 100644
index 0000000..961bd41
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/return1.0
@@ -0,0 +1,11 @@
+# $FreeBSD$
+set -e
+
+# PR 77067, 85267
+f() {
+ return 1
+ true
+}
+
+f || true
+exit 0
diff --git a/tools/regression/bin/sh/set-e/semi1.1 b/tools/regression/bin/sh/set-e/semi1.1
new file mode 100644
index 0000000..90476a9
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/semi1.1
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+false; true
+exit 0
diff --git a/tools/regression/bin/sh/set-e/semi2.1 b/tools/regression/bin/sh/set-e/semi2.1
new file mode 100644
index 0000000..8f510ac
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/semi2.1
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+true; false
+exit 0
diff --git a/tools/regression/bin/sh/set-e/subshell1.0 b/tools/regression/bin/sh/set-e/subshell1.0
new file mode 100644
index 0000000..8e5831b
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/subshell1.0
@@ -0,0 +1,3 @@
+# $FreeBSD$
+set -e
+(true)
diff --git a/tools/regression/bin/sh/set-e/subshell2.1 b/tools/regression/bin/sh/set-e/subshell2.1
new file mode 100644
index 0000000..619e98a
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/subshell2.1
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+(false)
+exit 0
diff --git a/tools/regression/bin/sh/set-e/until1.0 b/tools/regression/bin/sh/set-e/until1.0
new file mode 100644
index 0000000..71ea7f2
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/until1.0
@@ -0,0 +1,5 @@
+# $FreeBSD$
+set -e
+until false; do
+ break
+done
diff --git a/tools/regression/bin/sh/set-e/until2.0 b/tools/regression/bin/sh/set-e/until2.0
new file mode 100644
index 0000000..24ea276
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/until2.0
@@ -0,0 +1,5 @@
+# $FreeBSD$
+set -e
+until false; false; do
+ break
+done
diff --git a/tools/regression/bin/sh/set-e/until3.0 b/tools/regression/bin/sh/set-e/until3.0
new file mode 100644
index 0000000..597db59
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/until3.0
@@ -0,0 +1,9 @@
+# $FreeBSD$
+set -e
+f() {
+ until false; do
+ false
+ break
+ done
+}
+f || true
diff --git a/tools/regression/bin/sh/set-e/while1.0 b/tools/regression/bin/sh/set-e/while1.0
new file mode 100644
index 0000000..e4c8938
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/while1.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+while false; do
+done
diff --git a/tools/regression/bin/sh/set-e/while2.0 b/tools/regression/bin/sh/set-e/while2.0
new file mode 100644
index 0000000..a331237
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/while2.0
@@ -0,0 +1,4 @@
+# $FreeBSD$
+set -e
+while false; false; do
+done
diff --git a/tools/regression/bin/sh/set-e/while3.0 b/tools/regression/bin/sh/set-e/while3.0
new file mode 100644
index 0000000..dd3c790
--- /dev/null
+++ b/tools/regression/bin/sh/set-e/while3.0
@@ -0,0 +1,9 @@
+# $FreeBSD$
+set -e
+f() {
+ while true; do
+ false
+ break
+ done
+}
+f || true
diff --git a/tools/regression/ccd/layout/Makefile b/tools/regression/ccd/layout/Makefile
new file mode 100644
index 0000000..1e6b4df
--- /dev/null
+++ b/tools/regression/ccd/layout/Makefile
@@ -0,0 +1,11 @@
+#
+# $FreeBSD$
+#
+# Regression test for ccd's layout.
+#
+
+test:
+ sh ccd0.sh
+
+clean:
+ rm -f a b _.*
diff --git a/tools/regression/ccd/layout/a.c b/tools/regression/ccd/layout/a.c
new file mode 100644
index 0000000..33eea10
--- /dev/null
+++ b/tools/regression/ccd/layout/a.c
@@ -0,0 +1,16 @@
+/* $FreeBSD$ */
+#include <unistd.h>
+
+static uint32_t buf[512/4];
+main()
+{
+ u_int u = 0;
+
+ while (1) {
+ buf[0] = u++;
+
+ if (512 != write(1, buf, sizeof buf))
+ break;
+ }
+ exit (0);
+}
diff --git a/tools/regression/ccd/layout/b.c b/tools/regression/ccd/layout/b.c
new file mode 100644
index 0000000..5b4ae8e
--- /dev/null
+++ b/tools/regression/ccd/layout/b.c
@@ -0,0 +1,19 @@
+/* $FreeBSD$ */
+
+#include <unistd.h>
+#include <fcntl.h>
+
+static uint32_t buf[512/4];
+main()
+{
+ u_int u = 0;
+
+ while (1) {
+
+ if (512 != read(0, buf, sizeof buf))
+ break;
+
+ printf("%u %u\n", u++, buf[0]);
+ }
+ exit (0);
+}
diff --git a/tools/regression/ccd/layout/ccd.sh b/tools/regression/ccd/layout/ccd.sh
new file mode 100644
index 0000000..62d4726
--- /dev/null
+++ b/tools/regression/ccd/layout/ccd.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+# $FreeBSD$
+
+set -e
+
+if mount | grep ccd3 ; then
+ echo "ccd3 seems to be mounted"
+ exit 1
+fi
+
+(
+ccdconfig -u ccd3 || true
+mdconfig -d -u 90 || true
+mdconfig -d -u 91 || true
+mdconfig -d -u 92 || true
+mdconfig -d -u 93 || true
+) > /dev/null 2>&1
+
+mdconfig -a -t malloc -s $1 -u 90
+mdconfig -a -t malloc -s $2 -u 91
+mdconfig -a -t malloc -s $3 -u 92
+mdconfig -a -t malloc -s $4 -u 93
+
+ccdconfig -v ccd3 $5 $6 /dev/md90 /dev/md91 /dev/md92 /dev/md93
+./a > /dev/ccd3
+
+md5 < /dev/md90
+md5 < /dev/md91
+md5 < /dev/md92
+md5 < /dev/md93
+
+(
+./b < /dev/md90 | sed -e 1,16d -e 's/^/md90 /'
+./b < /dev/md91 | sed -e 1,16d -e 's/^/md91 /'
+./b < /dev/md92 | sed -e 1,16d -e 's/^/md92 /'
+./b < /dev/md93 | sed -e 1,16d -e 's/^/md93 /'
+) | sort +2n | awk '
+ {
+ if ($1 != l1) {
+ if (l1 != "") {
+ if (l1 == "md90") printf ""
+ if (l1 == "md91") printf " "
+ if (l1 == "md92") printf " "
+ if (l1 == "md93") printf " "
+ print l3,l2,l
+ }
+ l1 = $1
+ l2 = $2
+ l3 = $3
+ l = 0;
+ }
+ l++;
+ }
+END {
+ if (l1 == "md90") printf ""
+ if (l1 == "md91") printf " "
+ if (l1 == "md92") printf " "
+ if (l1 == "md93") printf " "
+ print l3,l2,l
+ }
+'
diff --git a/tools/regression/ccd/layout/ccd0.sh b/tools/regression/ccd/layout/ccd0.sh
new file mode 100644
index 0000000..0f71b18
--- /dev/null
+++ b/tools/regression/ccd/layout/ccd0.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+# $FreeBSD$
+
+set -e
+
+make a
+make b
+foo() {
+ f="${1}_${2}_${3}_${4}_${5}_${6}"
+ echo $f
+ sh ccd.sh $1 $2 $3 $4 $5 $6 > _.$f
+ if [ -f ref.$f ] ; then
+ diff -u -I '$FreeBSD' ref.$f _.$f
+ fi
+}
+
+foo 128k 128k 128k 128k 0 0
+foo 128k 128k 128k 128k 0 4
+foo 128k 128k 128k 128k 4 0
+foo 128k 128k 128k 128k 4 2
+foo 128k 128k 128k 128k 4 4
+
+foo 256k 128k 128k 128k 0 0
+foo 256k 128k 128k 128k 0 4
+foo 256k 128k 128k 128k 4 0
+foo 256k 128k 128k 128k 4 2
+foo 256k 128k 128k 128k 4 4
+
+foo 256k 128k 384k 128k 0 0
+foo 256k 128k 384k 128k 0 4
+foo 256k 128k 384k 128k 4 0
+foo 256k 128k 384k 128k 4 2
+foo 256k 128k 384k 128k 4 4
+
+foo 256k 128k 384k 128k 16 0
+foo 256k 128k 384k 128k 16 4
+foo 256k 128k 384k 128k 16 0
+foo 256k 128k 384k 128k 16 2
+foo 256k 128k 384k 128k 16 4
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_0 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_0
new file mode 100644
index 0000000..470f2dc
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_0
@@ -0,0 +1,10 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 960 blocks concatenated
+76089c8ed2249882ae0bb260dcb4a913
+4cc57a9dd953d032ae7e07edaef31203
+476dc065c9ba15e4610975fe57d2d46e
+569cb47720caaf9543c26737195e6f67
+0 16 240
+ 240 16 240
+ 480 16 240
+ 720 16 240
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_4 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_4
new file mode 100644
index 0000000..470f2dc
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_4
@@ -0,0 +1,10 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 960 blocks concatenated
+76089c8ed2249882ae0bb260dcb4a913
+4cc57a9dd953d032ae7e07edaef31203
+476dc065c9ba15e4610975fe57d2d46e
+569cb47720caaf9543c26737195e6f67
+0 16 240
+ 240 16 240
+ 480 16 240
+ 720 16 240
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_0 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_0
new file mode 100644
index 0000000..593c413
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_0
@@ -0,0 +1,246 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 4 blocks
+c3019ef8e08259f8748931f225e5cebf
+ddef760dcef4784565cfe7d76e5aa3ce
+1bb551ae77e015eb5186e7630fde16c4
+be4d327cb8085aa69a446f15b42521c7
+0 16 4
+ 4 16 4
+ 8 16 4
+ 12 16 4
+16 20 4
+ 20 20 4
+ 24 20 4
+ 28 20 4
+32 24 4
+ 36 24 4
+ 40 24 4
+ 44 24 4
+48 28 4
+ 52 28 4
+ 56 28 4
+ 60 28 4
+64 32 4
+ 68 32 4
+ 72 32 4
+ 76 32 4
+80 36 4
+ 84 36 4
+ 88 36 4
+ 92 36 4
+96 40 4
+ 100 40 4
+ 104 40 4
+ 108 40 4
+112 44 4
+ 116 44 4
+ 120 44 4
+ 124 44 4
+128 48 4
+ 132 48 4
+ 136 48 4
+ 140 48 4
+144 52 4
+ 148 52 4
+ 152 52 4
+ 156 52 4
+160 56 4
+ 164 56 4
+ 168 56 4
+ 172 56 4
+176 60 4
+ 180 60 4
+ 184 60 4
+ 188 60 4
+192 64 4
+ 196 64 4
+ 200 64 4
+ 204 64 4
+208 68 4
+ 212 68 4
+ 216 68 4
+ 220 68 4
+224 72 4
+ 228 72 4
+ 232 72 4
+ 236 72 4
+240 76 4
+ 244 76 4
+ 248 76 4
+ 252 76 4
+256 80 4
+ 260 80 4
+ 264 80 4
+ 268 80 4
+272 84 4
+ 276 84 4
+ 280 84 4
+ 284 84 4
+288 88 4
+ 292 88 4
+ 296 88 4
+ 300 88 4
+304 92 4
+ 308 92 4
+ 312 92 4
+ 316 92 4
+320 96 4
+ 324 96 4
+ 328 96 4
+ 332 96 4
+336 100 4
+ 340 100 4
+ 344 100 4
+ 348 100 4
+352 104 4
+ 356 104 4
+ 360 104 4
+ 364 104 4
+368 108 4
+ 372 108 4
+ 376 108 4
+ 380 108 4
+384 112 4
+ 388 112 4
+ 392 112 4
+ 396 112 4
+400 116 4
+ 404 116 4
+ 408 116 4
+ 412 116 4
+416 120 4
+ 420 120 4
+ 424 120 4
+ 428 120 4
+432 124 4
+ 436 124 4
+ 440 124 4
+ 444 124 4
+448 128 4
+ 452 128 4
+ 456 128 4
+ 460 128 4
+464 132 4
+ 468 132 4
+ 472 132 4
+ 476 132 4
+480 136 4
+ 484 136 4
+ 488 136 4
+ 492 136 4
+496 140 4
+ 500 140 4
+ 504 140 4
+ 508 140 4
+512 144 4
+ 516 144 4
+ 520 144 4
+ 524 144 4
+528 148 4
+ 532 148 4
+ 536 148 4
+ 540 148 4
+544 152 4
+ 548 152 4
+ 552 152 4
+ 556 152 4
+560 156 4
+ 564 156 4
+ 568 156 4
+ 572 156 4
+576 160 4
+ 580 160 4
+ 584 160 4
+ 588 160 4
+592 164 4
+ 596 164 4
+ 600 164 4
+ 604 164 4
+608 168 4
+ 612 168 4
+ 616 168 4
+ 620 168 4
+624 172 4
+ 628 172 4
+ 632 172 4
+ 636 172 4
+640 176 4
+ 644 176 4
+ 648 176 4
+ 652 176 4
+656 180 4
+ 660 180 4
+ 664 180 4
+ 668 180 4
+672 184 4
+ 676 184 4
+ 680 184 4
+ 684 184 4
+688 188 4
+ 692 188 4
+ 696 188 4
+ 700 188 4
+704 192 4
+ 708 192 4
+ 712 192 4
+ 716 192 4
+720 196 4
+ 724 196 4
+ 728 196 4
+ 732 196 4
+736 200 4
+ 740 200 4
+ 744 200 4
+ 748 200 4
+752 204 4
+ 756 204 4
+ 760 204 4
+ 764 204 4
+768 208 4
+ 772 208 4
+ 776 208 4
+ 780 208 4
+784 212 4
+ 788 212 4
+ 792 212 4
+ 796 212 4
+800 216 4
+ 804 216 4
+ 808 216 4
+ 812 216 4
+816 220 4
+ 820 220 4
+ 824 220 4
+ 828 220 4
+832 224 4
+ 836 224 4
+ 840 224 4
+ 844 224 4
+848 228 4
+ 852 228 4
+ 856 228 4
+ 860 228 4
+864 232 4
+ 868 232 4
+ 872 232 4
+ 876 232 4
+880 236 4
+ 884 236 4
+ 888 236 4
+ 892 236 4
+896 240 4
+ 900 240 4
+ 904 240 4
+ 908 240 4
+912 244 4
+ 916 244 4
+ 920 244 4
+ 924 244 4
+928 248 4
+ 932 248 4
+ 936 248 4
+ 940 248 4
+944 252 4
+ 948 252 4
+ 952 252 4
+ 956 252 4
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_2 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_2
new file mode 100644
index 0000000..593c413
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_2
@@ -0,0 +1,246 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 4 blocks
+c3019ef8e08259f8748931f225e5cebf
+ddef760dcef4784565cfe7d76e5aa3ce
+1bb551ae77e015eb5186e7630fde16c4
+be4d327cb8085aa69a446f15b42521c7
+0 16 4
+ 4 16 4
+ 8 16 4
+ 12 16 4
+16 20 4
+ 20 20 4
+ 24 20 4
+ 28 20 4
+32 24 4
+ 36 24 4
+ 40 24 4
+ 44 24 4
+48 28 4
+ 52 28 4
+ 56 28 4
+ 60 28 4
+64 32 4
+ 68 32 4
+ 72 32 4
+ 76 32 4
+80 36 4
+ 84 36 4
+ 88 36 4
+ 92 36 4
+96 40 4
+ 100 40 4
+ 104 40 4
+ 108 40 4
+112 44 4
+ 116 44 4
+ 120 44 4
+ 124 44 4
+128 48 4
+ 132 48 4
+ 136 48 4
+ 140 48 4
+144 52 4
+ 148 52 4
+ 152 52 4
+ 156 52 4
+160 56 4
+ 164 56 4
+ 168 56 4
+ 172 56 4
+176 60 4
+ 180 60 4
+ 184 60 4
+ 188 60 4
+192 64 4
+ 196 64 4
+ 200 64 4
+ 204 64 4
+208 68 4
+ 212 68 4
+ 216 68 4
+ 220 68 4
+224 72 4
+ 228 72 4
+ 232 72 4
+ 236 72 4
+240 76 4
+ 244 76 4
+ 248 76 4
+ 252 76 4
+256 80 4
+ 260 80 4
+ 264 80 4
+ 268 80 4
+272 84 4
+ 276 84 4
+ 280 84 4
+ 284 84 4
+288 88 4
+ 292 88 4
+ 296 88 4
+ 300 88 4
+304 92 4
+ 308 92 4
+ 312 92 4
+ 316 92 4
+320 96 4
+ 324 96 4
+ 328 96 4
+ 332 96 4
+336 100 4
+ 340 100 4
+ 344 100 4
+ 348 100 4
+352 104 4
+ 356 104 4
+ 360 104 4
+ 364 104 4
+368 108 4
+ 372 108 4
+ 376 108 4
+ 380 108 4
+384 112 4
+ 388 112 4
+ 392 112 4
+ 396 112 4
+400 116 4
+ 404 116 4
+ 408 116 4
+ 412 116 4
+416 120 4
+ 420 120 4
+ 424 120 4
+ 428 120 4
+432 124 4
+ 436 124 4
+ 440 124 4
+ 444 124 4
+448 128 4
+ 452 128 4
+ 456 128 4
+ 460 128 4
+464 132 4
+ 468 132 4
+ 472 132 4
+ 476 132 4
+480 136 4
+ 484 136 4
+ 488 136 4
+ 492 136 4
+496 140 4
+ 500 140 4
+ 504 140 4
+ 508 140 4
+512 144 4
+ 516 144 4
+ 520 144 4
+ 524 144 4
+528 148 4
+ 532 148 4
+ 536 148 4
+ 540 148 4
+544 152 4
+ 548 152 4
+ 552 152 4
+ 556 152 4
+560 156 4
+ 564 156 4
+ 568 156 4
+ 572 156 4
+576 160 4
+ 580 160 4
+ 584 160 4
+ 588 160 4
+592 164 4
+ 596 164 4
+ 600 164 4
+ 604 164 4
+608 168 4
+ 612 168 4
+ 616 168 4
+ 620 168 4
+624 172 4
+ 628 172 4
+ 632 172 4
+ 636 172 4
+640 176 4
+ 644 176 4
+ 648 176 4
+ 652 176 4
+656 180 4
+ 660 180 4
+ 664 180 4
+ 668 180 4
+672 184 4
+ 676 184 4
+ 680 184 4
+ 684 184 4
+688 188 4
+ 692 188 4
+ 696 188 4
+ 700 188 4
+704 192 4
+ 708 192 4
+ 712 192 4
+ 716 192 4
+720 196 4
+ 724 196 4
+ 728 196 4
+ 732 196 4
+736 200 4
+ 740 200 4
+ 744 200 4
+ 748 200 4
+752 204 4
+ 756 204 4
+ 760 204 4
+ 764 204 4
+768 208 4
+ 772 208 4
+ 776 208 4
+ 780 208 4
+784 212 4
+ 788 212 4
+ 792 212 4
+ 796 212 4
+800 216 4
+ 804 216 4
+ 808 216 4
+ 812 216 4
+816 220 4
+ 820 220 4
+ 824 220 4
+ 828 220 4
+832 224 4
+ 836 224 4
+ 840 224 4
+ 844 224 4
+848 228 4
+ 852 228 4
+ 856 228 4
+ 860 228 4
+864 232 4
+ 868 232 4
+ 872 232 4
+ 876 232 4
+880 236 4
+ 884 236 4
+ 888 236 4
+ 892 236 4
+896 240 4
+ 900 240 4
+ 904 240 4
+ 908 240 4
+912 244 4
+ 916 244 4
+ 920 244 4
+ 924 244 4
+928 248 4
+ 932 248 4
+ 936 248 4
+ 940 248 4
+944 252 4
+ 948 252 4
+ 952 252 4
+ 956 252 4
diff --git a/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_4 b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_4
new file mode 100644
index 0000000..9f8aebc
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_4
@@ -0,0 +1,966 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 480 blocks interleaved at 4 blocks
+a77c5edd8917abb32dc165750f1af781
+8db0b90ec1fa54feca98ad8fd292b07c
+a77c5edd8917abb32dc165750f1af781
+8db0b90ec1fa54feca98ad8fd292b07c
+0 16 1
+ 0 16 1
+1 17 1
+ 1 17 1
+2 18 1
+ 2 18 1
+3 19 1
+ 3 19 1
+ 4 16 1
+ 4 16 1
+ 5 17 1
+ 5 17 1
+ 6 18 1
+ 6 18 1
+ 7 19 1
+ 7 19 1
+8 20 1
+ 8 20 1
+9 21 1
+ 9 21 1
+10 22 1
+ 10 22 1
+11 23 1
+ 11 23 1
+ 12 20 1
+ 12 20 1
+ 13 21 1
+ 13 21 1
+ 14 22 1
+ 14 22 1
+ 15 23 1
+ 15 23 1
+16 24 1
+ 16 24 1
+17 25 1
+ 17 25 1
+18 26 1
+ 18 26 1
+19 27 1
+ 19 27 1
+ 20 24 1
+ 20 24 1
+ 21 25 1
+ 21 25 1
+ 22 26 1
+ 22 26 1
+ 23 27 1
+ 23 27 1
+24 28 1
+ 24 28 1
+25 29 1
+ 25 29 1
+26 30 1
+ 26 30 1
+27 31 1
+ 27 31 1
+ 28 28 1
+ 28 28 1
+ 29 29 1
+ 29 29 1
+ 30 30 1
+ 30 30 1
+ 31 31 1
+ 31 31 1
+32 32 1
+ 32 32 1
+33 33 1
+ 33 33 1
+34 34 1
+ 34 34 1
+35 35 1
+ 35 35 1
+ 36 32 1
+ 36 32 1
+ 37 33 1
+ 37 33 1
+ 38 34 1
+ 38 34 1
+ 39 35 1
+ 39 35 1
+40 36 1
+ 40 36 1
+41 37 1
+ 41 37 1
+42 38 1
+ 42 38 1
+43 39 1
+ 43 39 1
+ 44 36 1
+ 44 36 1
+ 45 37 1
+ 45 37 1
+ 46 38 1
+ 46 38 1
+ 47 39 1
+ 47 39 1
+48 40 1
+ 48 40 1
+49 41 1
+ 49 41 1
+50 42 1
+ 50 42 1
+51 43 1
+ 51 43 1
+ 52 40 1
+ 52 40 1
+ 53 41 1
+ 53 41 1
+ 54 42 1
+ 54 42 1
+ 55 43 1
+ 55 43 1
+56 44 1
+ 56 44 1
+57 45 1
+ 57 45 1
+58 46 1
+ 58 46 1
+59 47 1
+ 59 47 1
+ 60 44 1
+ 60 44 1
+ 61 45 1
+ 61 45 1
+ 62 46 1
+ 62 46 1
+ 63 47 1
+ 63 47 1
+64 48 1
+ 64 48 1
+65 49 1
+ 65 49 1
+66 50 1
+ 66 50 1
+67 51 1
+ 67 51 1
+ 68 48 1
+ 68 48 1
+ 69 49 1
+ 69 49 1
+ 70 50 1
+ 70 50 1
+ 71 51 1
+ 71 51 1
+72 52 1
+ 72 52 1
+73 53 1
+ 73 53 1
+74 54 1
+ 74 54 1
+75 55 1
+ 75 55 1
+ 76 52 1
+ 76 52 1
+ 77 53 1
+ 77 53 1
+ 78 54 1
+ 78 54 1
+ 79 55 1
+ 79 55 1
+80 56 1
+ 80 56 1
+81 57 1
+ 81 57 1
+82 58 1
+ 82 58 1
+83 59 1
+ 83 59 1
+ 84 56 1
+ 84 56 1
+ 85 57 1
+ 85 57 1
+ 86 58 1
+ 86 58 1
+ 87 59 1
+ 87 59 1
+88 60 1
+ 88 60 1
+89 61 1
+ 89 61 1
+90 62 1
+ 90 62 1
+91 63 1
+ 91 63 1
+ 92 60 1
+ 92 60 1
+ 93 61 1
+ 93 61 1
+ 94 62 1
+ 94 62 1
+ 95 63 1
+ 95 63 1
+96 64 1
+ 96 64 1
+97 65 1
+ 97 65 1
+98 66 1
+ 98 66 1
+99 67 1
+ 99 67 1
+ 100 64 1
+ 100 64 1
+ 101 65 1
+ 101 65 1
+ 102 66 1
+ 102 66 1
+ 103 67 1
+ 103 67 1
+104 68 1
+ 104 68 1
+105 69 1
+ 105 69 1
+106 70 1
+ 106 70 1
+107 71 1
+ 107 71 1
+ 108 68 1
+ 108 68 1
+ 109 69 1
+ 109 69 1
+ 110 70 1
+ 110 70 1
+ 111 71 1
+ 111 71 1
+112 72 1
+ 112 72 1
+113 73 1
+ 113 73 1
+114 74 1
+ 114 74 1
+115 75 1
+ 115 75 1
+ 116 72 1
+ 116 72 1
+ 117 73 1
+ 117 73 1
+ 118 74 1
+ 118 74 1
+ 119 75 1
+ 119 75 1
+120 76 1
+ 120 76 1
+121 77 1
+ 121 77 1
+122 78 1
+ 122 78 1
+123 79 1
+ 123 79 1
+ 124 76 1
+ 124 76 1
+ 125 77 1
+ 125 77 1
+ 126 78 1
+ 126 78 1
+ 127 79 1
+ 127 79 1
+128 80 1
+ 128 80 1
+129 81 1
+ 129 81 1
+130 82 1
+ 130 82 1
+131 83 1
+ 131 83 1
+ 132 80 1
+ 132 80 1
+ 133 81 1
+ 133 81 1
+ 134 82 1
+ 134 82 1
+ 135 83 1
+ 135 83 1
+136 84 1
+ 136 84 1
+137 85 1
+ 137 85 1
+138 86 1
+ 138 86 1
+139 87 1
+ 139 87 1
+ 140 84 1
+ 140 84 1
+ 141 85 1
+ 141 85 1
+ 142 86 1
+ 142 86 1
+ 143 87 1
+ 143 87 1
+144 88 1
+ 144 88 1
+145 89 1
+ 145 89 1
+146 90 1
+ 146 90 1
+147 91 1
+ 147 91 1
+ 148 88 1
+ 148 88 1
+ 149 89 1
+ 149 89 1
+ 150 90 1
+ 150 90 1
+ 151 91 1
+ 151 91 1
+152 92 1
+ 152 92 1
+153 93 1
+ 153 93 1
+154 94 1
+ 154 94 1
+155 95 1
+ 155 95 1
+ 156 92 1
+ 156 92 1
+ 157 93 1
+ 157 93 1
+ 158 94 1
+ 158 94 1
+ 159 95 1
+ 159 95 1
+160 96 1
+ 160 96 1
+161 97 1
+ 161 97 1
+162 98 1
+ 162 98 1
+163 99 1
+ 163 99 1
+ 164 96 1
+ 164 96 1
+ 165 97 1
+ 165 97 1
+ 166 98 1
+ 166 98 1
+ 167 99 1
+ 167 99 1
+168 100 1
+ 168 100 1
+169 101 1
+ 169 101 1
+170 102 1
+ 170 102 1
+171 103 1
+ 171 103 1
+ 172 100 1
+ 172 100 1
+ 173 101 1
+ 173 101 1
+ 174 102 1
+ 174 102 1
+ 175 103 1
+ 175 103 1
+176 104 1
+ 176 104 1
+177 105 1
+ 177 105 1
+178 106 1
+ 178 106 1
+179 107 1
+ 179 107 1
+ 180 104 1
+ 180 104 1
+ 181 105 1
+ 181 105 1
+ 182 106 1
+ 182 106 1
+ 183 107 1
+ 183 107 1
+184 108 1
+ 184 108 1
+185 109 1
+ 185 109 1
+186 110 1
+ 186 110 1
+187 111 1
+ 187 111 1
+ 188 108 1
+ 188 108 1
+ 189 109 1
+ 189 109 1
+ 190 110 1
+ 190 110 1
+ 191 111 1
+ 191 111 1
+192 112 1
+ 192 112 1
+193 113 1
+ 193 113 1
+194 114 1
+ 194 114 1
+195 115 1
+ 195 115 1
+ 196 112 1
+ 196 112 1
+ 197 113 1
+ 197 113 1
+ 198 114 1
+ 198 114 1
+ 199 115 1
+ 199 115 1
+200 116 1
+ 200 116 1
+201 117 1
+ 201 117 1
+202 118 1
+ 202 118 1
+203 119 1
+ 203 119 1
+ 204 116 1
+ 204 116 1
+ 205 117 1
+ 205 117 1
+ 206 118 1
+ 206 118 1
+ 207 119 1
+ 207 119 1
+208 120 1
+ 208 120 1
+209 121 1
+ 209 121 1
+210 122 1
+ 210 122 1
+211 123 1
+ 211 123 1
+ 212 120 1
+ 212 120 1
+ 213 121 1
+ 213 121 1
+ 214 122 1
+ 214 122 1
+ 215 123 1
+ 215 123 1
+216 124 1
+ 216 124 1
+217 125 1
+ 217 125 1
+218 126 1
+ 218 126 1
+219 127 1
+ 219 127 1
+ 220 124 1
+ 220 124 1
+ 221 125 1
+ 221 125 1
+ 222 126 1
+ 222 126 1
+ 223 127 1
+ 223 127 1
+224 128 1
+ 224 128 1
+225 129 1
+ 225 129 1
+226 130 1
+ 226 130 1
+227 131 1
+ 227 131 1
+ 228 128 1
+ 228 128 1
+ 229 129 1
+ 229 129 1
+ 230 130 1
+ 230 130 1
+ 231 131 1
+ 231 131 1
+232 132 1
+ 232 132 1
+233 133 1
+ 233 133 1
+234 134 1
+ 234 134 1
+235 135 1
+ 235 135 1
+ 236 132 1
+ 236 132 1
+ 237 133 1
+ 237 133 1
+ 238 134 1
+ 238 134 1
+ 239 135 1
+ 239 135 1
+240 136 1
+ 240 136 1
+241 137 1
+ 241 137 1
+242 138 1
+ 242 138 1
+243 139 1
+ 243 139 1
+ 244 136 1
+ 244 136 1
+ 245 137 1
+ 245 137 1
+ 246 138 1
+ 246 138 1
+ 247 139 1
+ 247 139 1
+248 140 1
+ 248 140 1
+249 141 1
+ 249 141 1
+250 142 1
+ 250 142 1
+251 143 1
+ 251 143 1
+ 252 140 1
+ 252 140 1
+ 253 141 1
+ 253 141 1
+ 254 142 1
+ 254 142 1
+ 255 143 1
+ 255 143 1
+256 144 1
+ 256 144 1
+257 145 1
+ 257 145 1
+258 146 1
+ 258 146 1
+259 147 1
+ 259 147 1
+ 260 144 1
+ 260 144 1
+ 261 145 1
+ 261 145 1
+ 262 146 1
+ 262 146 1
+ 263 147 1
+ 263 147 1
+264 148 1
+ 264 148 1
+265 149 1
+ 265 149 1
+266 150 1
+ 266 150 1
+267 151 1
+ 267 151 1
+ 268 148 1
+ 268 148 1
+ 269 149 1
+ 269 149 1
+ 270 150 1
+ 270 150 1
+ 271 151 1
+ 271 151 1
+272 152 1
+ 272 152 1
+273 153 1
+ 273 153 1
+274 154 1
+ 274 154 1
+275 155 1
+ 275 155 1
+ 276 152 1
+ 276 152 1
+ 277 153 1
+ 277 153 1
+ 278 154 1
+ 278 154 1
+ 279 155 1
+ 279 155 1
+280 156 1
+ 280 156 1
+281 157 1
+ 281 157 1
+282 158 1
+ 282 158 1
+283 159 1
+ 283 159 1
+ 284 156 1
+ 284 156 1
+ 285 157 1
+ 285 157 1
+ 286 158 1
+ 286 158 1
+ 287 159 1
+ 287 159 1
+288 160 1
+ 288 160 1
+289 161 1
+ 289 161 1
+290 162 1
+ 290 162 1
+291 163 1
+ 291 163 1
+ 292 160 1
+ 292 160 1
+ 293 161 1
+ 293 161 1
+ 294 162 1
+ 294 162 1
+ 295 163 1
+ 295 163 1
+296 164 1
+ 296 164 1
+297 165 1
+ 297 165 1
+298 166 1
+ 298 166 1
+299 167 1
+ 299 167 1
+ 300 164 1
+ 300 164 1
+ 301 165 1
+ 301 165 1
+ 302 166 1
+ 302 166 1
+ 303 167 1
+ 303 167 1
+304 168 1
+ 304 168 1
+305 169 1
+ 305 169 1
+306 170 1
+ 306 170 1
+307 171 1
+ 307 171 1
+ 308 168 1
+ 308 168 1
+ 309 169 1
+ 309 169 1
+ 310 170 1
+ 310 170 1
+ 311 171 1
+ 311 171 1
+312 172 1
+ 312 172 1
+313 173 1
+ 313 173 1
+314 174 1
+ 314 174 1
+315 175 1
+ 315 175 1
+ 316 172 1
+ 316 172 1
+ 317 173 1
+ 317 173 1
+ 318 174 1
+ 318 174 1
+ 319 175 1
+ 319 175 1
+320 176 1
+ 320 176 1
+321 177 1
+ 321 177 1
+322 178 1
+ 322 178 1
+323 179 1
+ 323 179 1
+ 324 176 1
+ 324 176 1
+ 325 177 1
+ 325 177 1
+ 326 178 1
+ 326 178 1
+ 327 179 1
+ 327 179 1
+328 180 1
+ 328 180 1
+329 181 1
+ 329 181 1
+330 182 1
+ 330 182 1
+331 183 1
+ 331 183 1
+ 332 180 1
+ 332 180 1
+ 333 181 1
+ 333 181 1
+ 334 182 1
+ 334 182 1
+ 335 183 1
+ 335 183 1
+336 184 1
+ 336 184 1
+337 185 1
+ 337 185 1
+338 186 1
+ 338 186 1
+339 187 1
+ 339 187 1
+ 340 184 1
+ 340 184 1
+ 341 185 1
+ 341 185 1
+ 342 186 1
+ 342 186 1
+ 343 187 1
+ 343 187 1
+344 188 1
+ 344 188 1
+345 189 1
+ 345 189 1
+346 190 1
+ 346 190 1
+347 191 1
+ 347 191 1
+ 348 188 1
+ 348 188 1
+ 349 189 1
+ 349 189 1
+ 350 190 1
+ 350 190 1
+ 351 191 1
+ 351 191 1
+352 192 1
+ 352 192 1
+353 193 1
+ 353 193 1
+354 194 1
+ 354 194 1
+355 195 1
+ 355 195 1
+ 356 192 1
+ 356 192 1
+ 357 193 1
+ 357 193 1
+ 358 194 1
+ 358 194 1
+ 359 195 1
+ 359 195 1
+360 196 1
+ 360 196 1
+361 197 1
+ 361 197 1
+362 198 1
+ 362 198 1
+363 199 1
+ 363 199 1
+ 364 196 1
+ 364 196 1
+ 365 197 1
+ 365 197 1
+ 366 198 1
+ 366 198 1
+ 367 199 1
+ 367 199 1
+368 200 1
+ 368 200 1
+369 201 1
+ 369 201 1
+370 202 1
+ 370 202 1
+371 203 1
+ 371 203 1
+ 372 200 1
+ 372 200 1
+ 373 201 1
+ 373 201 1
+ 374 202 1
+ 374 202 1
+ 375 203 1
+ 375 203 1
+376 204 1
+ 376 204 1
+377 205 1
+ 377 205 1
+378 206 1
+ 378 206 1
+379 207 1
+ 379 207 1
+ 380 204 1
+ 380 204 1
+ 381 205 1
+ 381 205 1
+ 382 206 1
+ 382 206 1
+ 383 207 1
+ 383 207 1
+384 208 1
+ 384 208 1
+385 209 1
+ 385 209 1
+386 210 1
+ 386 210 1
+387 211 1
+ 387 211 1
+ 388 208 1
+ 388 208 1
+ 389 209 1
+ 389 209 1
+ 390 210 1
+ 390 210 1
+ 391 211 1
+ 391 211 1
+392 212 1
+ 392 212 1
+393 213 1
+ 393 213 1
+394 214 1
+ 394 214 1
+395 215 1
+ 395 215 1
+ 396 212 1
+ 396 212 1
+ 397 213 1
+ 397 213 1
+ 398 214 1
+ 398 214 1
+ 399 215 1
+ 399 215 1
+400 216 1
+ 400 216 1
+401 217 1
+ 401 217 1
+402 218 1
+ 402 218 1
+403 219 1
+ 403 219 1
+ 404 216 1
+ 404 216 1
+ 405 217 1
+ 405 217 1
+ 406 218 1
+ 406 218 1
+ 407 219 1
+ 407 219 1
+408 220 1
+ 408 220 1
+409 221 1
+ 409 221 1
+410 222 1
+ 410 222 1
+411 223 1
+ 411 223 1
+ 412 220 1
+ 412 220 1
+ 413 221 1
+ 413 221 1
+ 414 222 1
+ 414 222 1
+ 415 223 1
+ 415 223 1
+416 224 1
+ 416 224 1
+417 225 1
+ 417 225 1
+418 226 1
+ 418 226 1
+419 227 1
+ 419 227 1
+ 420 224 1
+ 420 224 1
+ 421 225 1
+ 421 225 1
+ 422 226 1
+ 422 226 1
+ 423 227 1
+ 423 227 1
+424 228 1
+ 424 228 1
+425 229 1
+ 425 229 1
+426 230 1
+ 426 230 1
+427 231 1
+ 427 231 1
+ 428 228 1
+ 428 228 1
+ 429 229 1
+ 429 229 1
+ 430 230 1
+ 430 230 1
+ 431 231 1
+ 431 231 1
+432 232 1
+ 432 232 1
+433 233 1
+ 433 233 1
+434 234 1
+ 434 234 1
+435 235 1
+ 435 235 1
+ 436 232 1
+ 436 232 1
+ 437 233 1
+ 437 233 1
+ 438 234 1
+ 438 234 1
+ 439 235 1
+ 439 235 1
+440 236 1
+ 440 236 1
+441 237 1
+ 441 237 1
+442 238 1
+ 442 238 1
+443 239 1
+ 443 239 1
+ 444 236 1
+ 444 236 1
+ 445 237 1
+ 445 237 1
+ 446 238 1
+ 446 238 1
+ 447 239 1
+ 447 239 1
+448 240 1
+ 448 240 1
+449 241 1
+ 449 241 1
+450 242 1
+ 450 242 1
+451 243 1
+ 451 243 1
+ 452 240 1
+ 452 240 1
+ 453 241 1
+ 453 241 1
+ 454 242 1
+ 454 242 1
+ 455 243 1
+ 455 243 1
+456 244 1
+ 456 244 1
+457 245 1
+ 457 245 1
+458 246 1
+ 458 246 1
+459 247 1
+ 459 247 1
+ 460 244 1
+ 460 244 1
+ 461 245 1
+ 461 245 1
+ 462 246 1
+ 462 246 1
+ 463 247 1
+ 463 247 1
+464 248 1
+ 464 248 1
+465 249 1
+ 465 249 1
+466 250 1
+ 466 250 1
+467 251 1
+ 467 251 1
+ 468 248 1
+ 468 248 1
+ 469 249 1
+ 469 249 1
+ 470 250 1
+ 470 250 1
+ 471 251 1
+ 471 251 1
+472 252 1
+ 472 252 1
+473 253 1
+ 473 253 1
+474 254 1
+ 474 254 1
+475 255 1
+ 475 255 1
+ 476 252 1
+ 476 252 1
+ 477 253 1
+ 477 253 1
+ 478 254 1
+ 478 254 1
+ 479 255 1
+ 479 255 1
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_0 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_0
new file mode 100644
index 0000000..44a2818
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_0
@@ -0,0 +1,10 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 1216 blocks concatenated
+50ca80e7defff2928b09d9e6c22d14ff
+a5f4fb6b17d948b83b8685b3adfe0926
+a294e6900769b0a1cd744d01d5a5508d
+14fe8b94bacd1cf53ea587bbac2b74e4
+0 16 496
+ 496 16 240
+ 736 16 240
+ 976 16 240
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_4 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_4
new file mode 100644
index 0000000..44a2818
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_4
@@ -0,0 +1,10 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 1216 blocks concatenated
+50ca80e7defff2928b09d9e6c22d14ff
+a5f4fb6b17d948b83b8685b3adfe0926
+a294e6900769b0a1cd744d01d5a5508d
+14fe8b94bacd1cf53ea587bbac2b74e4
+0 16 496
+ 496 16 240
+ 736 16 240
+ 976 16 240
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_0 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_0
new file mode 100644
index 0000000..6fc421a
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_0
@@ -0,0 +1,247 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 1216 blocks interleaved at 4 blocks
+85853375739fe031c97c20e6226aae0e
+ddef760dcef4784565cfe7d76e5aa3ce
+1bb551ae77e015eb5186e7630fde16c4
+be4d327cb8085aa69a446f15b42521c7
+0 16 4
+ 4 16 4
+ 8 16 4
+ 12 16 4
+16 20 4
+ 20 20 4
+ 24 20 4
+ 28 20 4
+32 24 4
+ 36 24 4
+ 40 24 4
+ 44 24 4
+48 28 4
+ 52 28 4
+ 56 28 4
+ 60 28 4
+64 32 4
+ 68 32 4
+ 72 32 4
+ 76 32 4
+80 36 4
+ 84 36 4
+ 88 36 4
+ 92 36 4
+96 40 4
+ 100 40 4
+ 104 40 4
+ 108 40 4
+112 44 4
+ 116 44 4
+ 120 44 4
+ 124 44 4
+128 48 4
+ 132 48 4
+ 136 48 4
+ 140 48 4
+144 52 4
+ 148 52 4
+ 152 52 4
+ 156 52 4
+160 56 4
+ 164 56 4
+ 168 56 4
+ 172 56 4
+176 60 4
+ 180 60 4
+ 184 60 4
+ 188 60 4
+192 64 4
+ 196 64 4
+ 200 64 4
+ 204 64 4
+208 68 4
+ 212 68 4
+ 216 68 4
+ 220 68 4
+224 72 4
+ 228 72 4
+ 232 72 4
+ 236 72 4
+240 76 4
+ 244 76 4
+ 248 76 4
+ 252 76 4
+256 80 4
+ 260 80 4
+ 264 80 4
+ 268 80 4
+272 84 4
+ 276 84 4
+ 280 84 4
+ 284 84 4
+288 88 4
+ 292 88 4
+ 296 88 4
+ 300 88 4
+304 92 4
+ 308 92 4
+ 312 92 4
+ 316 92 4
+320 96 4
+ 324 96 4
+ 328 96 4
+ 332 96 4
+336 100 4
+ 340 100 4
+ 344 100 4
+ 348 100 4
+352 104 4
+ 356 104 4
+ 360 104 4
+ 364 104 4
+368 108 4
+ 372 108 4
+ 376 108 4
+ 380 108 4
+384 112 4
+ 388 112 4
+ 392 112 4
+ 396 112 4
+400 116 4
+ 404 116 4
+ 408 116 4
+ 412 116 4
+416 120 4
+ 420 120 4
+ 424 120 4
+ 428 120 4
+432 124 4
+ 436 124 4
+ 440 124 4
+ 444 124 4
+448 128 4
+ 452 128 4
+ 456 128 4
+ 460 128 4
+464 132 4
+ 468 132 4
+ 472 132 4
+ 476 132 4
+480 136 4
+ 484 136 4
+ 488 136 4
+ 492 136 4
+496 140 4
+ 500 140 4
+ 504 140 4
+ 508 140 4
+512 144 4
+ 516 144 4
+ 520 144 4
+ 524 144 4
+528 148 4
+ 532 148 4
+ 536 148 4
+ 540 148 4
+544 152 4
+ 548 152 4
+ 552 152 4
+ 556 152 4
+560 156 4
+ 564 156 4
+ 568 156 4
+ 572 156 4
+576 160 4
+ 580 160 4
+ 584 160 4
+ 588 160 4
+592 164 4
+ 596 164 4
+ 600 164 4
+ 604 164 4
+608 168 4
+ 612 168 4
+ 616 168 4
+ 620 168 4
+624 172 4
+ 628 172 4
+ 632 172 4
+ 636 172 4
+640 176 4
+ 644 176 4
+ 648 176 4
+ 652 176 4
+656 180 4
+ 660 180 4
+ 664 180 4
+ 668 180 4
+672 184 4
+ 676 184 4
+ 680 184 4
+ 684 184 4
+688 188 4
+ 692 188 4
+ 696 188 4
+ 700 188 4
+704 192 4
+ 708 192 4
+ 712 192 4
+ 716 192 4
+720 196 4
+ 724 196 4
+ 728 196 4
+ 732 196 4
+736 200 4
+ 740 200 4
+ 744 200 4
+ 748 200 4
+752 204 4
+ 756 204 4
+ 760 204 4
+ 764 204 4
+768 208 4
+ 772 208 4
+ 776 208 4
+ 780 208 4
+784 212 4
+ 788 212 4
+ 792 212 4
+ 796 212 4
+800 216 4
+ 804 216 4
+ 808 216 4
+ 812 216 4
+816 220 4
+ 820 220 4
+ 824 220 4
+ 828 220 4
+832 224 4
+ 836 224 4
+ 840 224 4
+ 844 224 4
+848 228 4
+ 852 228 4
+ 856 228 4
+ 860 228 4
+864 232 4
+ 868 232 4
+ 872 232 4
+ 876 232 4
+880 236 4
+ 884 236 4
+ 888 236 4
+ 892 236 4
+896 240 4
+ 900 240 4
+ 904 240 4
+ 908 240 4
+912 244 4
+ 916 244 4
+ 920 244 4
+ 924 244 4
+928 248 4
+ 932 248 4
+ 936 248 4
+ 940 248 4
+944 252 4
+ 948 252 4
+ 952 252 4
+ 956 252 4
+960 256 256
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_2 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_2
new file mode 100644
index 0000000..53cfc79
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_2
@@ -0,0 +1,246 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 4 blocks
+c7d32c7a0aacde7259cac3ab214bda77
+ddef760dcef4784565cfe7d76e5aa3ce
+1bb551ae77e015eb5186e7630fde16c4
+be4d327cb8085aa69a446f15b42521c7
+0 16 260
+ 4 16 4
+ 8 16 4
+ 12 16 4
+16 20 4
+ 20 20 4
+ 24 20 4
+ 28 20 4
+32 24 4
+ 36 24 4
+ 40 24 4
+ 44 24 4
+48 28 4
+ 52 28 4
+ 56 28 4
+ 60 28 4
+64 32 4
+ 68 32 4
+ 72 32 4
+ 76 32 4
+80 36 4
+ 84 36 4
+ 88 36 4
+ 92 36 4
+96 40 4
+ 100 40 4
+ 104 40 4
+ 108 40 4
+112 44 4
+ 116 44 4
+ 120 44 4
+ 124 44 4
+128 48 4
+ 132 48 4
+ 136 48 4
+ 140 48 4
+144 52 4
+ 148 52 4
+ 152 52 4
+ 156 52 4
+160 56 4
+ 164 56 4
+ 168 56 4
+ 172 56 4
+176 60 4
+ 180 60 4
+ 184 60 4
+ 188 60 4
+192 64 4
+ 196 64 4
+ 200 64 4
+ 204 64 4
+208 68 4
+ 212 68 4
+ 216 68 4
+ 220 68 4
+224 72 4
+ 228 72 4
+ 232 72 4
+ 236 72 4
+240 76 4
+ 244 76 4
+ 248 76 4
+ 252 76 4
+256 80 4
+ 260 80 4
+ 264 80 4
+ 268 80 4
+272 84 4
+ 276 84 4
+ 280 84 4
+ 284 84 4
+288 88 4
+ 292 88 4
+ 296 88 4
+ 300 88 4
+304 92 4
+ 308 92 4
+ 312 92 4
+ 316 92 4
+320 96 4
+ 324 96 4
+ 328 96 4
+ 332 96 4
+336 100 4
+ 340 100 4
+ 344 100 4
+ 348 100 4
+352 104 4
+ 356 104 4
+ 360 104 4
+ 364 104 4
+368 108 4
+ 372 108 4
+ 376 108 4
+ 380 108 4
+384 112 4
+ 388 112 4
+ 392 112 4
+ 396 112 4
+400 116 4
+ 404 116 4
+ 408 116 4
+ 412 116 4
+416 120 4
+ 420 120 4
+ 424 120 4
+ 428 120 4
+432 124 4
+ 436 124 4
+ 440 124 4
+ 444 124 4
+448 128 4
+ 452 128 4
+ 456 128 4
+ 460 128 4
+464 132 4
+ 468 132 4
+ 472 132 4
+ 476 132 4
+480 136 4
+ 484 136 4
+ 488 136 4
+ 492 136 4
+496 140 4
+ 500 140 4
+ 504 140 4
+ 508 140 4
+512 144 4
+ 516 144 4
+ 520 144 4
+ 524 144 4
+528 148 4
+ 532 148 4
+ 536 148 4
+ 540 148 4
+544 152 4
+ 548 152 4
+ 552 152 4
+ 556 152 4
+560 156 4
+ 564 156 4
+ 568 156 4
+ 572 156 4
+576 160 4
+ 580 160 4
+ 584 160 4
+ 588 160 4
+592 164 4
+ 596 164 4
+ 600 164 4
+ 604 164 4
+608 168 4
+ 612 168 4
+ 616 168 4
+ 620 168 4
+624 172 4
+ 628 172 4
+ 632 172 4
+ 636 172 4
+640 176 4
+ 644 176 4
+ 648 176 4
+ 652 176 4
+656 180 4
+ 660 180 4
+ 664 180 4
+ 668 180 4
+672 184 4
+ 676 184 4
+ 680 184 4
+ 684 184 4
+688 188 4
+ 692 188 4
+ 696 188 4
+ 700 188 4
+704 192 4
+ 708 192 4
+ 712 192 4
+ 716 192 4
+720 196 4
+ 724 196 4
+ 728 196 4
+ 732 196 4
+736 200 4
+ 740 200 4
+ 744 200 4
+ 748 200 4
+752 204 4
+ 756 204 4
+ 760 204 4
+ 764 204 4
+768 208 4
+ 772 208 4
+ 776 208 4
+ 780 208 4
+784 212 4
+ 788 212 4
+ 792 212 4
+ 796 212 4
+800 216 4
+ 804 216 4
+ 808 216 4
+ 812 216 4
+816 220 4
+ 820 220 4
+ 824 220 4
+ 828 220 4
+832 224 4
+ 836 224 4
+ 840 224 4
+ 844 224 4
+848 228 4
+ 852 228 4
+ 856 228 4
+ 860 228 4
+864 232 4
+ 868 232 4
+ 872 232 4
+ 876 232 4
+880 236 4
+ 884 236 4
+ 888 236 4
+ 892 236 4
+896 240 4
+ 900 240 4
+ 904 240 4
+ 908 240 4
+912 244 4
+ 916 244 4
+ 920 244 4
+ 924 244 4
+928 248 4
+ 932 248 4
+ 936 248 4
+ 940 248 4
+944 252 4
+ 948 252 4
+ 952 252 4
+ 956 252 4
diff --git a/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_4 b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_4
new file mode 100644
index 0000000..ba42742
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_4
@@ -0,0 +1,966 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 480 blocks interleaved at 4 blocks
+ab2274c3b7241753a015c243417c0c29
+8db0b90ec1fa54feca98ad8fd292b07c
+a77c5edd8917abb32dc165750f1af781
+8db0b90ec1fa54feca98ad8fd292b07c
+0 16 257
+ 0 16 1
+1 17 1
+ 1 17 1
+2 18 1
+ 2 18 1
+3 19 1
+ 3 19 1
+ 4 16 1
+ 4 16 1
+ 5 17 1
+ 5 17 1
+ 6 18 1
+ 6 18 1
+ 7 19 1
+ 7 19 1
+8 20 1
+ 8 20 1
+9 21 1
+ 9 21 1
+10 22 1
+ 10 22 1
+11 23 1
+ 11 23 1
+ 12 20 1
+ 12 20 1
+ 13 21 1
+ 13 21 1
+ 14 22 1
+ 14 22 1
+ 15 23 1
+ 15 23 1
+16 24 1
+ 16 24 1
+17 25 1
+ 17 25 1
+18 26 1
+ 18 26 1
+19 27 1
+ 19 27 1
+ 20 24 1
+ 20 24 1
+ 21 25 1
+ 21 25 1
+ 22 26 1
+ 22 26 1
+ 23 27 1
+ 23 27 1
+24 28 1
+ 24 28 1
+25 29 1
+ 25 29 1
+26 30 1
+ 26 30 1
+27 31 1
+ 27 31 1
+ 28 28 1
+ 28 28 1
+ 29 29 1
+ 29 29 1
+ 30 30 1
+ 30 30 1
+ 31 31 1
+ 31 31 1
+32 32 1
+ 32 32 1
+33 33 1
+ 33 33 1
+34 34 1
+ 34 34 1
+35 35 1
+ 35 35 1
+ 36 32 1
+ 36 32 1
+ 37 33 1
+ 37 33 1
+ 38 34 1
+ 38 34 1
+ 39 35 1
+ 39 35 1
+40 36 1
+ 40 36 1
+41 37 1
+ 41 37 1
+42 38 1
+ 42 38 1
+43 39 1
+ 43 39 1
+ 44 36 1
+ 44 36 1
+ 45 37 1
+ 45 37 1
+ 46 38 1
+ 46 38 1
+ 47 39 1
+ 47 39 1
+48 40 1
+ 48 40 1
+49 41 1
+ 49 41 1
+50 42 1
+ 50 42 1
+51 43 1
+ 51 43 1
+ 52 40 1
+ 52 40 1
+ 53 41 1
+ 53 41 1
+ 54 42 1
+ 54 42 1
+ 55 43 1
+ 55 43 1
+56 44 1
+ 56 44 1
+57 45 1
+ 57 45 1
+58 46 1
+ 58 46 1
+59 47 1
+ 59 47 1
+ 60 44 1
+ 60 44 1
+ 61 45 1
+ 61 45 1
+ 62 46 1
+ 62 46 1
+ 63 47 1
+ 63 47 1
+64 48 1
+ 64 48 1
+65 49 1
+ 65 49 1
+66 50 1
+ 66 50 1
+67 51 1
+ 67 51 1
+ 68 48 1
+ 68 48 1
+ 69 49 1
+ 69 49 1
+ 70 50 1
+ 70 50 1
+ 71 51 1
+ 71 51 1
+72 52 1
+ 72 52 1
+73 53 1
+ 73 53 1
+74 54 1
+ 74 54 1
+75 55 1
+ 75 55 1
+ 76 52 1
+ 76 52 1
+ 77 53 1
+ 77 53 1
+ 78 54 1
+ 78 54 1
+ 79 55 1
+ 79 55 1
+80 56 1
+ 80 56 1
+81 57 1
+ 81 57 1
+82 58 1
+ 82 58 1
+83 59 1
+ 83 59 1
+ 84 56 1
+ 84 56 1
+ 85 57 1
+ 85 57 1
+ 86 58 1
+ 86 58 1
+ 87 59 1
+ 87 59 1
+88 60 1
+ 88 60 1
+89 61 1
+ 89 61 1
+90 62 1
+ 90 62 1
+91 63 1
+ 91 63 1
+ 92 60 1
+ 92 60 1
+ 93 61 1
+ 93 61 1
+ 94 62 1
+ 94 62 1
+ 95 63 1
+ 95 63 1
+96 64 1
+ 96 64 1
+97 65 1
+ 97 65 1
+98 66 1
+ 98 66 1
+99 67 1
+ 99 67 1
+ 100 64 1
+ 100 64 1
+ 101 65 1
+ 101 65 1
+ 102 66 1
+ 102 66 1
+ 103 67 1
+ 103 67 1
+104 68 1
+ 104 68 1
+105 69 1
+ 105 69 1
+106 70 1
+ 106 70 1
+107 71 1
+ 107 71 1
+ 108 68 1
+ 108 68 1
+ 109 69 1
+ 109 69 1
+ 110 70 1
+ 110 70 1
+ 111 71 1
+ 111 71 1
+112 72 1
+ 112 72 1
+113 73 1
+ 113 73 1
+114 74 1
+ 114 74 1
+115 75 1
+ 115 75 1
+ 116 72 1
+ 116 72 1
+ 117 73 1
+ 117 73 1
+ 118 74 1
+ 118 74 1
+ 119 75 1
+ 119 75 1
+120 76 1
+ 120 76 1
+121 77 1
+ 121 77 1
+122 78 1
+ 122 78 1
+123 79 1
+ 123 79 1
+ 124 76 1
+ 124 76 1
+ 125 77 1
+ 125 77 1
+ 126 78 1
+ 126 78 1
+ 127 79 1
+ 127 79 1
+128 80 1
+ 128 80 1
+129 81 1
+ 129 81 1
+130 82 1
+ 130 82 1
+131 83 1
+ 131 83 1
+ 132 80 1
+ 132 80 1
+ 133 81 1
+ 133 81 1
+ 134 82 1
+ 134 82 1
+ 135 83 1
+ 135 83 1
+136 84 1
+ 136 84 1
+137 85 1
+ 137 85 1
+138 86 1
+ 138 86 1
+139 87 1
+ 139 87 1
+ 140 84 1
+ 140 84 1
+ 141 85 1
+ 141 85 1
+ 142 86 1
+ 142 86 1
+ 143 87 1
+ 143 87 1
+144 88 1
+ 144 88 1
+145 89 1
+ 145 89 1
+146 90 1
+ 146 90 1
+147 91 1
+ 147 91 1
+ 148 88 1
+ 148 88 1
+ 149 89 1
+ 149 89 1
+ 150 90 1
+ 150 90 1
+ 151 91 1
+ 151 91 1
+152 92 1
+ 152 92 1
+153 93 1
+ 153 93 1
+154 94 1
+ 154 94 1
+155 95 1
+ 155 95 1
+ 156 92 1
+ 156 92 1
+ 157 93 1
+ 157 93 1
+ 158 94 1
+ 158 94 1
+ 159 95 1
+ 159 95 1
+160 96 1
+ 160 96 1
+161 97 1
+ 161 97 1
+162 98 1
+ 162 98 1
+163 99 1
+ 163 99 1
+ 164 96 1
+ 164 96 1
+ 165 97 1
+ 165 97 1
+ 166 98 1
+ 166 98 1
+ 167 99 1
+ 167 99 1
+168 100 1
+ 168 100 1
+169 101 1
+ 169 101 1
+170 102 1
+ 170 102 1
+171 103 1
+ 171 103 1
+ 172 100 1
+ 172 100 1
+ 173 101 1
+ 173 101 1
+ 174 102 1
+ 174 102 1
+ 175 103 1
+ 175 103 1
+176 104 1
+ 176 104 1
+177 105 1
+ 177 105 1
+178 106 1
+ 178 106 1
+179 107 1
+ 179 107 1
+ 180 104 1
+ 180 104 1
+ 181 105 1
+ 181 105 1
+ 182 106 1
+ 182 106 1
+ 183 107 1
+ 183 107 1
+184 108 1
+ 184 108 1
+185 109 1
+ 185 109 1
+186 110 1
+ 186 110 1
+187 111 1
+ 187 111 1
+ 188 108 1
+ 188 108 1
+ 189 109 1
+ 189 109 1
+ 190 110 1
+ 190 110 1
+ 191 111 1
+ 191 111 1
+192 112 1
+ 192 112 1
+193 113 1
+ 193 113 1
+194 114 1
+ 194 114 1
+195 115 1
+ 195 115 1
+ 196 112 1
+ 196 112 1
+ 197 113 1
+ 197 113 1
+ 198 114 1
+ 198 114 1
+ 199 115 1
+ 199 115 1
+200 116 1
+ 200 116 1
+201 117 1
+ 201 117 1
+202 118 1
+ 202 118 1
+203 119 1
+ 203 119 1
+ 204 116 1
+ 204 116 1
+ 205 117 1
+ 205 117 1
+ 206 118 1
+ 206 118 1
+ 207 119 1
+ 207 119 1
+208 120 1
+ 208 120 1
+209 121 1
+ 209 121 1
+210 122 1
+ 210 122 1
+211 123 1
+ 211 123 1
+ 212 120 1
+ 212 120 1
+ 213 121 1
+ 213 121 1
+ 214 122 1
+ 214 122 1
+ 215 123 1
+ 215 123 1
+216 124 1
+ 216 124 1
+217 125 1
+ 217 125 1
+218 126 1
+ 218 126 1
+219 127 1
+ 219 127 1
+ 220 124 1
+ 220 124 1
+ 221 125 1
+ 221 125 1
+ 222 126 1
+ 222 126 1
+ 223 127 1
+ 223 127 1
+224 128 1
+ 224 128 1
+225 129 1
+ 225 129 1
+226 130 1
+ 226 130 1
+227 131 1
+ 227 131 1
+ 228 128 1
+ 228 128 1
+ 229 129 1
+ 229 129 1
+ 230 130 1
+ 230 130 1
+ 231 131 1
+ 231 131 1
+232 132 1
+ 232 132 1
+233 133 1
+ 233 133 1
+234 134 1
+ 234 134 1
+235 135 1
+ 235 135 1
+ 236 132 1
+ 236 132 1
+ 237 133 1
+ 237 133 1
+ 238 134 1
+ 238 134 1
+ 239 135 1
+ 239 135 1
+240 136 1
+ 240 136 1
+241 137 1
+ 241 137 1
+242 138 1
+ 242 138 1
+243 139 1
+ 243 139 1
+ 244 136 1
+ 244 136 1
+ 245 137 1
+ 245 137 1
+ 246 138 1
+ 246 138 1
+ 247 139 1
+ 247 139 1
+248 140 1
+ 248 140 1
+249 141 1
+ 249 141 1
+250 142 1
+ 250 142 1
+251 143 1
+ 251 143 1
+ 252 140 1
+ 252 140 1
+ 253 141 1
+ 253 141 1
+ 254 142 1
+ 254 142 1
+ 255 143 1
+ 255 143 1
+256 144 1
+ 256 144 1
+257 145 1
+ 257 145 1
+258 146 1
+ 258 146 1
+259 147 1
+ 259 147 1
+ 260 144 1
+ 260 144 1
+ 261 145 1
+ 261 145 1
+ 262 146 1
+ 262 146 1
+ 263 147 1
+ 263 147 1
+264 148 1
+ 264 148 1
+265 149 1
+ 265 149 1
+266 150 1
+ 266 150 1
+267 151 1
+ 267 151 1
+ 268 148 1
+ 268 148 1
+ 269 149 1
+ 269 149 1
+ 270 150 1
+ 270 150 1
+ 271 151 1
+ 271 151 1
+272 152 1
+ 272 152 1
+273 153 1
+ 273 153 1
+274 154 1
+ 274 154 1
+275 155 1
+ 275 155 1
+ 276 152 1
+ 276 152 1
+ 277 153 1
+ 277 153 1
+ 278 154 1
+ 278 154 1
+ 279 155 1
+ 279 155 1
+280 156 1
+ 280 156 1
+281 157 1
+ 281 157 1
+282 158 1
+ 282 158 1
+283 159 1
+ 283 159 1
+ 284 156 1
+ 284 156 1
+ 285 157 1
+ 285 157 1
+ 286 158 1
+ 286 158 1
+ 287 159 1
+ 287 159 1
+288 160 1
+ 288 160 1
+289 161 1
+ 289 161 1
+290 162 1
+ 290 162 1
+291 163 1
+ 291 163 1
+ 292 160 1
+ 292 160 1
+ 293 161 1
+ 293 161 1
+ 294 162 1
+ 294 162 1
+ 295 163 1
+ 295 163 1
+296 164 1
+ 296 164 1
+297 165 1
+ 297 165 1
+298 166 1
+ 298 166 1
+299 167 1
+ 299 167 1
+ 300 164 1
+ 300 164 1
+ 301 165 1
+ 301 165 1
+ 302 166 1
+ 302 166 1
+ 303 167 1
+ 303 167 1
+304 168 1
+ 304 168 1
+305 169 1
+ 305 169 1
+306 170 1
+ 306 170 1
+307 171 1
+ 307 171 1
+ 308 168 1
+ 308 168 1
+ 309 169 1
+ 309 169 1
+ 310 170 1
+ 310 170 1
+ 311 171 1
+ 311 171 1
+312 172 1
+ 312 172 1
+313 173 1
+ 313 173 1
+314 174 1
+ 314 174 1
+315 175 1
+ 315 175 1
+ 316 172 1
+ 316 172 1
+ 317 173 1
+ 317 173 1
+ 318 174 1
+ 318 174 1
+ 319 175 1
+ 319 175 1
+320 176 1
+ 320 176 1
+321 177 1
+ 321 177 1
+322 178 1
+ 322 178 1
+323 179 1
+ 323 179 1
+ 324 176 1
+ 324 176 1
+ 325 177 1
+ 325 177 1
+ 326 178 1
+ 326 178 1
+ 327 179 1
+ 327 179 1
+328 180 1
+ 328 180 1
+329 181 1
+ 329 181 1
+330 182 1
+ 330 182 1
+331 183 1
+ 331 183 1
+ 332 180 1
+ 332 180 1
+ 333 181 1
+ 333 181 1
+ 334 182 1
+ 334 182 1
+ 335 183 1
+ 335 183 1
+336 184 1
+ 336 184 1
+337 185 1
+ 337 185 1
+338 186 1
+ 338 186 1
+339 187 1
+ 339 187 1
+ 340 184 1
+ 340 184 1
+ 341 185 1
+ 341 185 1
+ 342 186 1
+ 342 186 1
+ 343 187 1
+ 343 187 1
+344 188 1
+ 344 188 1
+345 189 1
+ 345 189 1
+346 190 1
+ 346 190 1
+347 191 1
+ 347 191 1
+ 348 188 1
+ 348 188 1
+ 349 189 1
+ 349 189 1
+ 350 190 1
+ 350 190 1
+ 351 191 1
+ 351 191 1
+352 192 1
+ 352 192 1
+353 193 1
+ 353 193 1
+354 194 1
+ 354 194 1
+355 195 1
+ 355 195 1
+ 356 192 1
+ 356 192 1
+ 357 193 1
+ 357 193 1
+ 358 194 1
+ 358 194 1
+ 359 195 1
+ 359 195 1
+360 196 1
+ 360 196 1
+361 197 1
+ 361 197 1
+362 198 1
+ 362 198 1
+363 199 1
+ 363 199 1
+ 364 196 1
+ 364 196 1
+ 365 197 1
+ 365 197 1
+ 366 198 1
+ 366 198 1
+ 367 199 1
+ 367 199 1
+368 200 1
+ 368 200 1
+369 201 1
+ 369 201 1
+370 202 1
+ 370 202 1
+371 203 1
+ 371 203 1
+ 372 200 1
+ 372 200 1
+ 373 201 1
+ 373 201 1
+ 374 202 1
+ 374 202 1
+ 375 203 1
+ 375 203 1
+376 204 1
+ 376 204 1
+377 205 1
+ 377 205 1
+378 206 1
+ 378 206 1
+379 207 1
+ 379 207 1
+ 380 204 1
+ 380 204 1
+ 381 205 1
+ 381 205 1
+ 382 206 1
+ 382 206 1
+ 383 207 1
+ 383 207 1
+384 208 1
+ 384 208 1
+385 209 1
+ 385 209 1
+386 210 1
+ 386 210 1
+387 211 1
+ 387 211 1
+ 388 208 1
+ 388 208 1
+ 389 209 1
+ 389 209 1
+ 390 210 1
+ 390 210 1
+ 391 211 1
+ 391 211 1
+392 212 1
+ 392 212 1
+393 213 1
+ 393 213 1
+394 214 1
+ 394 214 1
+395 215 1
+ 395 215 1
+ 396 212 1
+ 396 212 1
+ 397 213 1
+ 397 213 1
+ 398 214 1
+ 398 214 1
+ 399 215 1
+ 399 215 1
+400 216 1
+ 400 216 1
+401 217 1
+ 401 217 1
+402 218 1
+ 402 218 1
+403 219 1
+ 403 219 1
+ 404 216 1
+ 404 216 1
+ 405 217 1
+ 405 217 1
+ 406 218 1
+ 406 218 1
+ 407 219 1
+ 407 219 1
+408 220 1
+ 408 220 1
+409 221 1
+ 409 221 1
+410 222 1
+ 410 222 1
+411 223 1
+ 411 223 1
+ 412 220 1
+ 412 220 1
+ 413 221 1
+ 413 221 1
+ 414 222 1
+ 414 222 1
+ 415 223 1
+ 415 223 1
+416 224 1
+ 416 224 1
+417 225 1
+ 417 225 1
+418 226 1
+ 418 226 1
+419 227 1
+ 419 227 1
+ 420 224 1
+ 420 224 1
+ 421 225 1
+ 421 225 1
+ 422 226 1
+ 422 226 1
+ 423 227 1
+ 423 227 1
+424 228 1
+ 424 228 1
+425 229 1
+ 425 229 1
+426 230 1
+ 426 230 1
+427 231 1
+ 427 231 1
+ 428 228 1
+ 428 228 1
+ 429 229 1
+ 429 229 1
+ 430 230 1
+ 430 230 1
+ 431 231 1
+ 431 231 1
+432 232 1
+ 432 232 1
+433 233 1
+ 433 233 1
+434 234 1
+ 434 234 1
+435 235 1
+ 435 235 1
+ 436 232 1
+ 436 232 1
+ 437 233 1
+ 437 233 1
+ 438 234 1
+ 438 234 1
+ 439 235 1
+ 439 235 1
+440 236 1
+ 440 236 1
+441 237 1
+ 441 237 1
+442 238 1
+ 442 238 1
+443 239 1
+ 443 239 1
+ 444 236 1
+ 444 236 1
+ 445 237 1
+ 445 237 1
+ 446 238 1
+ 446 238 1
+ 447 239 1
+ 447 239 1
+448 240 1
+ 448 240 1
+449 241 1
+ 449 241 1
+450 242 1
+ 450 242 1
+451 243 1
+ 451 243 1
+ 452 240 1
+ 452 240 1
+ 453 241 1
+ 453 241 1
+ 454 242 1
+ 454 242 1
+ 455 243 1
+ 455 243 1
+456 244 1
+ 456 244 1
+457 245 1
+ 457 245 1
+458 246 1
+ 458 246 1
+459 247 1
+ 459 247 1
+ 460 244 1
+ 460 244 1
+ 461 245 1
+ 461 245 1
+ 462 246 1
+ 462 246 1
+ 463 247 1
+ 463 247 1
+464 248 1
+ 464 248 1
+465 249 1
+ 465 249 1
+466 250 1
+ 466 250 1
+467 251 1
+ 467 251 1
+ 468 248 1
+ 468 248 1
+ 469 249 1
+ 469 249 1
+ 470 250 1
+ 470 250 1
+ 471 251 1
+ 471 251 1
+472 252 1
+ 472 252 1
+473 253 1
+ 473 253 1
+474 254 1
+ 474 254 1
+475 255 1
+ 475 255 1
+ 476 252 1
+ 476 252 1
+ 477 253 1
+ 477 253 1
+ 478 254 1
+ 478 254 1
+ 479 255 1
+ 479 255 1
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_0 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_0
new file mode 100644
index 0000000..12de5a4
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_0
@@ -0,0 +1,10 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 1728 blocks concatenated
+50ca80e7defff2928b09d9e6c22d14ff
+a5f4fb6b17d948b83b8685b3adfe0926
+7fbfcf4d51719802c3c0f5a1a471a447
+948f0400dc0519463e17b6946b488810
+0 16 496
+ 496 16 240
+ 736 16 752
+ 1488 16 240
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_4 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_4
new file mode 100644
index 0000000..12de5a4
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_4
@@ -0,0 +1,10 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 1728 blocks concatenated
+50ca80e7defff2928b09d9e6c22d14ff
+a5f4fb6b17d948b83b8685b3adfe0926
+7fbfcf4d51719802c3c0f5a1a471a447
+948f0400dc0519463e17b6946b488810
+0 16 496
+ 496 16 240
+ 736 16 752
+ 1488 16 240
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_0 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_0
new file mode 100644
index 0000000..caf85b1
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_0
@@ -0,0 +1,98 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 1728 blocks interleaved at 16 blocks
+9f63a6ab2d5bd7c183e338387d9c4b59
+89518c095e85649516fa08fe98bf0a3e
+b400c2ac2de4e1dbb5930d55a89055e8
+65a3638152f0b6eaabf6a94f7aec6740
+0 16 16
+ 16 16 16
+ 32 16 16
+ 48 16 16
+64 32 16
+ 80 32 16
+ 96 32 16
+ 112 32 16
+128 48 16
+ 144 48 16
+ 160 48 16
+ 176 48 16
+192 64 16
+ 208 64 16
+ 224 64 16
+ 240 64 16
+256 80 16
+ 272 80 16
+ 288 80 16
+ 304 80 16
+320 96 16
+ 336 96 16
+ 352 96 16
+ 368 96 16
+384 112 16
+ 400 112 16
+ 416 112 16
+ 432 112 16
+448 128 16
+ 464 128 16
+ 480 128 16
+ 496 128 16
+512 144 16
+ 528 144 16
+ 544 144 16
+ 560 144 16
+576 160 16
+ 592 160 16
+ 608 160 16
+ 624 160 16
+640 176 16
+ 656 176 16
+ 672 176 16
+ 688 176 16
+704 192 16
+ 720 192 16
+ 736 192 16
+ 752 192 16
+768 208 16
+ 784 208 16
+ 800 208 16
+ 816 208 16
+832 224 16
+ 848 224 16
+ 864 224 16
+ 880 224 16
+896 240 16
+ 912 240 16
+ 928 240 16
+ 944 240 16
+960 256 16
+ 976 256 16
+992 272 16
+ 1008 272 16
+1024 288 16
+ 1040 288 16
+1056 304 16
+ 1072 304 16
+1088 320 16
+ 1104 320 16
+1120 336 16
+ 1136 336 16
+1152 352 16
+ 1168 352 16
+1184 368 16
+ 1200 368 16
+1216 384 16
+ 1232 384 16
+1248 400 16
+ 1264 400 16
+1280 416 16
+ 1296 416 16
+1312 432 16
+ 1328 432 16
+1344 448 16
+ 1360 448 16
+1376 464 16
+ 1392 464 16
+1408 480 16
+ 1424 480 16
+1440 496 16
+ 1456 496 272
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_2 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_2
new file mode 100644
index 0000000..e00fa6c
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_2
@@ -0,0 +1,68 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 16 blocks
+ebe23f400e868c343240761b0b52c2fd
+89518c095e85649516fa08fe98bf0a3e
+39e67c2031238afd4bc4f4a3ada6cb72
+65a3638152f0b6eaabf6a94f7aec6740
+0 16 257
+ 0 256 512
+1 17 15
+ 16 16 16
+ 32 16 16
+ 48 16 16
+64 32 16
+ 80 32 16
+ 96 32 16
+ 112 32 16
+128 48 16
+ 144 48 16
+ 160 48 16
+ 176 48 16
+192 64 16
+ 208 64 16
+ 224 64 16
+ 240 64 16
+256 80 16
+ 272 80 16
+ 288 80 16
+ 304 80 16
+320 96 16
+ 336 96 16
+ 352 96 16
+ 368 96 16
+384 112 16
+ 400 112 16
+ 416 112 16
+ 432 112 16
+448 128 16
+ 464 128 16
+ 480 128 16
+ 496 128 16
+512 144 16
+ 528 144 16
+ 544 144 16
+ 560 144 16
+576 160 16
+ 592 160 16
+ 608 160 16
+ 624 160 16
+640 176 16
+ 656 176 16
+ 672 176 16
+ 688 176 16
+704 192 16
+ 720 192 16
+ 736 192 16
+ 752 192 16
+768 208 16
+ 784 208 16
+ 800 208 16
+ 816 208 16
+832 224 16
+ 848 224 16
+ 864 224 16
+ 880 224 16
+896 240 16
+ 912 240 16
+ 928 240 16
+ 944 240 16
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_4 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_4
new file mode 100644
index 0000000..06c4890
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_4
@@ -0,0 +1,966 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 480 blocks interleaved at 16 blocks
+f3f609d828a50cca082f6b6f499ca4b5
+721d9967a8e2608d111cfc24304255ca
+6b4636821f4b4ef7cfcd195c1c9c2bd1
+721d9967a8e2608d111cfc24304255ca
+0 16 257
+ 0 16 513
+1 17 1
+ 1 17 1
+2 18 1
+ 2 18 1
+3 19 1
+ 3 19 1
+4 20 1
+ 4 20 1
+5 21 1
+ 5 21 1
+6 22 1
+ 6 22 1
+7 23 1
+ 7 23 1
+8 24 1
+ 8 24 1
+9 25 1
+ 9 25 1
+10 26 1
+ 10 26 1
+11 27 1
+ 11 27 1
+12 28 1
+ 12 28 1
+13 29 1
+ 13 29 1
+14 30 1
+ 14 30 1
+15 31 1
+ 15 31 1
+ 16 16 1
+ 16 16 1
+ 17 17 1
+ 17 17 1
+ 18 18 1
+ 18 18 1
+ 19 19 1
+ 19 19 1
+ 20 20 1
+ 20 20 1
+ 21 21 1
+ 21 21 1
+ 22 22 1
+ 22 22 1
+ 23 23 1
+ 23 23 1
+ 24 24 1
+ 24 24 1
+ 25 25 1
+ 25 25 1
+ 26 26 1
+ 26 26 1
+ 27 27 1
+ 27 27 1
+ 28 28 1
+ 28 28 1
+ 29 29 1
+ 29 29 1
+ 30 30 1
+ 30 30 1
+ 31 31 1
+ 31 31 1
+32 32 1
+ 32 32 1
+33 33 1
+ 33 33 1
+34 34 1
+ 34 34 1
+35 35 1
+ 35 35 1
+36 36 1
+ 36 36 1
+37 37 1
+ 37 37 1
+38 38 1
+ 38 38 1
+39 39 1
+ 39 39 1
+40 40 1
+ 40 40 1
+41 41 1
+ 41 41 1
+42 42 1
+ 42 42 1
+43 43 1
+ 43 43 1
+44 44 1
+ 44 44 1
+45 45 1
+ 45 45 1
+46 46 1
+ 46 46 1
+47 47 1
+ 47 47 1
+ 48 32 1
+ 48 32 1
+ 49 33 1
+ 49 33 1
+ 50 34 1
+ 50 34 1
+ 51 35 1
+ 51 35 1
+ 52 36 1
+ 52 36 1
+ 53 37 1
+ 53 37 1
+ 54 38 1
+ 54 38 1
+ 55 39 1
+ 55 39 1
+ 56 40 1
+ 56 40 1
+ 57 41 1
+ 57 41 1
+ 58 42 1
+ 58 42 1
+ 59 43 1
+ 59 43 1
+ 60 44 1
+ 60 44 1
+ 61 45 1
+ 61 45 1
+ 62 46 1
+ 62 46 1
+ 63 47 1
+ 63 47 1
+64 48 1
+ 64 48 1
+65 49 1
+ 65 49 1
+66 50 1
+ 66 50 1
+67 51 1
+ 67 51 1
+68 52 1
+ 68 52 1
+69 53 1
+ 69 53 1
+70 54 1
+ 70 54 1
+71 55 1
+ 71 55 1
+72 56 1
+ 72 56 1
+73 57 1
+ 73 57 1
+74 58 1
+ 74 58 1
+75 59 1
+ 75 59 1
+76 60 1
+ 76 60 1
+77 61 1
+ 77 61 1
+78 62 1
+ 78 62 1
+79 63 1
+ 79 63 1
+ 80 48 1
+ 80 48 1
+ 81 49 1
+ 81 49 1
+ 82 50 1
+ 82 50 1
+ 83 51 1
+ 83 51 1
+ 84 52 1
+ 84 52 1
+ 85 53 1
+ 85 53 1
+ 86 54 1
+ 86 54 1
+ 87 55 1
+ 87 55 1
+ 88 56 1
+ 88 56 1
+ 89 57 1
+ 89 57 1
+ 90 58 1
+ 90 58 1
+ 91 59 1
+ 91 59 1
+ 92 60 1
+ 92 60 1
+ 93 61 1
+ 93 61 1
+ 94 62 1
+ 94 62 1
+ 95 63 1
+ 95 63 1
+96 64 1
+ 96 64 1
+97 65 1
+ 97 65 1
+98 66 1
+ 98 66 1
+99 67 1
+ 99 67 1
+100 68 1
+ 100 68 1
+101 69 1
+ 101 69 1
+102 70 1
+ 102 70 1
+103 71 1
+ 103 71 1
+104 72 1
+ 104 72 1
+105 73 1
+ 105 73 1
+106 74 1
+ 106 74 1
+107 75 1
+ 107 75 1
+108 76 1
+ 108 76 1
+109 77 1
+ 109 77 1
+110 78 1
+ 110 78 1
+111 79 1
+ 111 79 1
+ 112 64 1
+ 112 64 1
+ 113 65 1
+ 113 65 1
+ 114 66 1
+ 114 66 1
+ 115 67 1
+ 115 67 1
+ 116 68 1
+ 116 68 1
+ 117 69 1
+ 117 69 1
+ 118 70 1
+ 118 70 1
+ 119 71 1
+ 119 71 1
+ 120 72 1
+ 120 72 1
+ 121 73 1
+ 121 73 1
+ 122 74 1
+ 122 74 1
+ 123 75 1
+ 123 75 1
+ 124 76 1
+ 124 76 1
+ 125 77 1
+ 125 77 1
+ 126 78 1
+ 126 78 1
+ 127 79 1
+ 127 79 1
+128 80 1
+ 128 80 1
+129 81 1
+ 129 81 1
+130 82 1
+ 130 82 1
+131 83 1
+ 131 83 1
+132 84 1
+ 132 84 1
+133 85 1
+ 133 85 1
+134 86 1
+ 134 86 1
+135 87 1
+ 135 87 1
+136 88 1
+ 136 88 1
+137 89 1
+ 137 89 1
+138 90 1
+ 138 90 1
+139 91 1
+ 139 91 1
+140 92 1
+ 140 92 1
+141 93 1
+ 141 93 1
+142 94 1
+ 142 94 1
+143 95 1
+ 143 95 1
+ 144 80 1
+ 144 80 1
+ 145 81 1
+ 145 81 1
+ 146 82 1
+ 146 82 1
+ 147 83 1
+ 147 83 1
+ 148 84 1
+ 148 84 1
+ 149 85 1
+ 149 85 1
+ 150 86 1
+ 150 86 1
+ 151 87 1
+ 151 87 1
+ 152 88 1
+ 152 88 1
+ 153 89 1
+ 153 89 1
+ 154 90 1
+ 154 90 1
+ 155 91 1
+ 155 91 1
+ 156 92 1
+ 156 92 1
+ 157 93 1
+ 157 93 1
+ 158 94 1
+ 158 94 1
+ 159 95 1
+ 159 95 1
+160 96 1
+ 160 96 1
+161 97 1
+ 161 97 1
+162 98 1
+ 162 98 1
+163 99 1
+ 163 99 1
+164 100 1
+ 164 100 1
+165 101 1
+ 165 101 1
+166 102 1
+ 166 102 1
+167 103 1
+ 167 103 1
+168 104 1
+ 168 104 1
+169 105 1
+ 169 105 1
+170 106 1
+ 170 106 1
+171 107 1
+ 171 107 1
+172 108 1
+ 172 108 1
+173 109 1
+ 173 109 1
+174 110 1
+ 174 110 1
+175 111 1
+ 175 111 1
+ 176 96 1
+ 176 96 1
+ 177 97 1
+ 177 97 1
+ 178 98 1
+ 178 98 1
+ 179 99 1
+ 179 99 1
+ 180 100 1
+ 180 100 1
+ 181 101 1
+ 181 101 1
+ 182 102 1
+ 182 102 1
+ 183 103 1
+ 183 103 1
+ 184 104 1
+ 184 104 1
+ 185 105 1
+ 185 105 1
+ 186 106 1
+ 186 106 1
+ 187 107 1
+ 187 107 1
+ 188 108 1
+ 188 108 1
+ 189 109 1
+ 189 109 1
+ 190 110 1
+ 190 110 1
+ 191 111 1
+ 191 111 1
+192 112 1
+ 192 112 1
+193 113 1
+ 193 113 1
+194 114 1
+ 194 114 1
+195 115 1
+ 195 115 1
+196 116 1
+ 196 116 1
+197 117 1
+ 197 117 1
+198 118 1
+ 198 118 1
+199 119 1
+ 199 119 1
+200 120 1
+ 200 120 1
+201 121 1
+ 201 121 1
+202 122 1
+ 202 122 1
+203 123 1
+ 203 123 1
+204 124 1
+ 204 124 1
+205 125 1
+ 205 125 1
+206 126 1
+ 206 126 1
+207 127 1
+ 207 127 1
+ 208 112 1
+ 208 112 1
+ 209 113 1
+ 209 113 1
+ 210 114 1
+ 210 114 1
+ 211 115 1
+ 211 115 1
+ 212 116 1
+ 212 116 1
+ 213 117 1
+ 213 117 1
+ 214 118 1
+ 214 118 1
+ 215 119 1
+ 215 119 1
+ 216 120 1
+ 216 120 1
+ 217 121 1
+ 217 121 1
+ 218 122 1
+ 218 122 1
+ 219 123 1
+ 219 123 1
+ 220 124 1
+ 220 124 1
+ 221 125 1
+ 221 125 1
+ 222 126 1
+ 222 126 1
+ 223 127 1
+ 223 127 1
+224 128 1
+ 224 128 1
+225 129 1
+ 225 129 1
+226 130 1
+ 226 130 1
+227 131 1
+ 227 131 1
+228 132 1
+ 228 132 1
+229 133 1
+ 229 133 1
+230 134 1
+ 230 134 1
+231 135 1
+ 231 135 1
+232 136 1
+ 232 136 1
+233 137 1
+ 233 137 1
+234 138 1
+ 234 138 1
+235 139 1
+ 235 139 1
+236 140 1
+ 236 140 1
+237 141 1
+ 237 141 1
+238 142 1
+ 238 142 1
+239 143 1
+ 239 143 1
+ 240 128 1
+ 240 128 1
+ 241 129 1
+ 241 129 1
+ 242 130 1
+ 242 130 1
+ 243 131 1
+ 243 131 1
+ 244 132 1
+ 244 132 1
+ 245 133 1
+ 245 133 1
+ 246 134 1
+ 246 134 1
+ 247 135 1
+ 247 135 1
+ 248 136 1
+ 248 136 1
+ 249 137 1
+ 249 137 1
+ 250 138 1
+ 250 138 1
+ 251 139 1
+ 251 139 1
+ 252 140 1
+ 252 140 1
+ 253 141 1
+ 253 141 1
+ 254 142 1
+ 254 142 1
+ 255 143 1
+ 255 143 1
+256 144 1
+ 256 144 1
+257 145 1
+ 257 145 1
+258 146 1
+ 258 146 1
+259 147 1
+ 259 147 1
+260 148 1
+ 260 148 1
+261 149 1
+ 261 149 1
+262 150 1
+ 262 150 1
+263 151 1
+ 263 151 1
+264 152 1
+ 264 152 1
+265 153 1
+ 265 153 1
+266 154 1
+ 266 154 1
+267 155 1
+ 267 155 1
+268 156 1
+ 268 156 1
+269 157 1
+ 269 157 1
+270 158 1
+ 270 158 1
+271 159 1
+ 271 159 1
+ 272 144 1
+ 272 144 1
+ 273 145 1
+ 273 145 1
+ 274 146 1
+ 274 146 1
+ 275 147 1
+ 275 147 1
+ 276 148 1
+ 276 148 1
+ 277 149 1
+ 277 149 1
+ 278 150 1
+ 278 150 1
+ 279 151 1
+ 279 151 1
+ 280 152 1
+ 280 152 1
+ 281 153 1
+ 281 153 1
+ 282 154 1
+ 282 154 1
+ 283 155 1
+ 283 155 1
+ 284 156 1
+ 284 156 1
+ 285 157 1
+ 285 157 1
+ 286 158 1
+ 286 158 1
+ 287 159 1
+ 287 159 1
+288 160 1
+ 288 160 1
+289 161 1
+ 289 161 1
+290 162 1
+ 290 162 1
+291 163 1
+ 291 163 1
+292 164 1
+ 292 164 1
+293 165 1
+ 293 165 1
+294 166 1
+ 294 166 1
+295 167 1
+ 295 167 1
+296 168 1
+ 296 168 1
+297 169 1
+ 297 169 1
+298 170 1
+ 298 170 1
+299 171 1
+ 299 171 1
+300 172 1
+ 300 172 1
+301 173 1
+ 301 173 1
+302 174 1
+ 302 174 1
+303 175 1
+ 303 175 1
+ 304 160 1
+ 304 160 1
+ 305 161 1
+ 305 161 1
+ 306 162 1
+ 306 162 1
+ 307 163 1
+ 307 163 1
+ 308 164 1
+ 308 164 1
+ 309 165 1
+ 309 165 1
+ 310 166 1
+ 310 166 1
+ 311 167 1
+ 311 167 1
+ 312 168 1
+ 312 168 1
+ 313 169 1
+ 313 169 1
+ 314 170 1
+ 314 170 1
+ 315 171 1
+ 315 171 1
+ 316 172 1
+ 316 172 1
+ 317 173 1
+ 317 173 1
+ 318 174 1
+ 318 174 1
+ 319 175 1
+ 319 175 1
+320 176 1
+ 320 176 1
+321 177 1
+ 321 177 1
+322 178 1
+ 322 178 1
+323 179 1
+ 323 179 1
+324 180 1
+ 324 180 1
+325 181 1
+ 325 181 1
+326 182 1
+ 326 182 1
+327 183 1
+ 327 183 1
+328 184 1
+ 328 184 1
+329 185 1
+ 329 185 1
+330 186 1
+ 330 186 1
+331 187 1
+ 331 187 1
+332 188 1
+ 332 188 1
+333 189 1
+ 333 189 1
+334 190 1
+ 334 190 1
+335 191 1
+ 335 191 1
+ 336 176 1
+ 336 176 1
+ 337 177 1
+ 337 177 1
+ 338 178 1
+ 338 178 1
+ 339 179 1
+ 339 179 1
+ 340 180 1
+ 340 180 1
+ 341 181 1
+ 341 181 1
+ 342 182 1
+ 342 182 1
+ 343 183 1
+ 343 183 1
+ 344 184 1
+ 344 184 1
+ 345 185 1
+ 345 185 1
+ 346 186 1
+ 346 186 1
+ 347 187 1
+ 347 187 1
+ 348 188 1
+ 348 188 1
+ 349 189 1
+ 349 189 1
+ 350 190 1
+ 350 190 1
+ 351 191 1
+ 351 191 1
+352 192 1
+ 352 192 1
+353 193 1
+ 353 193 1
+354 194 1
+ 354 194 1
+355 195 1
+ 355 195 1
+356 196 1
+ 356 196 1
+357 197 1
+ 357 197 1
+358 198 1
+ 358 198 1
+359 199 1
+ 359 199 1
+360 200 1
+ 360 200 1
+361 201 1
+ 361 201 1
+362 202 1
+ 362 202 1
+363 203 1
+ 363 203 1
+364 204 1
+ 364 204 1
+365 205 1
+ 365 205 1
+366 206 1
+ 366 206 1
+367 207 1
+ 367 207 1
+ 368 192 1
+ 368 192 1
+ 369 193 1
+ 369 193 1
+ 370 194 1
+ 370 194 1
+ 371 195 1
+ 371 195 1
+ 372 196 1
+ 372 196 1
+ 373 197 1
+ 373 197 1
+ 374 198 1
+ 374 198 1
+ 375 199 1
+ 375 199 1
+ 376 200 1
+ 376 200 1
+ 377 201 1
+ 377 201 1
+ 378 202 1
+ 378 202 1
+ 379 203 1
+ 379 203 1
+ 380 204 1
+ 380 204 1
+ 381 205 1
+ 381 205 1
+ 382 206 1
+ 382 206 1
+ 383 207 1
+ 383 207 1
+384 208 1
+ 384 208 1
+385 209 1
+ 385 209 1
+386 210 1
+ 386 210 1
+387 211 1
+ 387 211 1
+388 212 1
+ 388 212 1
+389 213 1
+ 389 213 1
+390 214 1
+ 390 214 1
+391 215 1
+ 391 215 1
+392 216 1
+ 392 216 1
+393 217 1
+ 393 217 1
+394 218 1
+ 394 218 1
+395 219 1
+ 395 219 1
+396 220 1
+ 396 220 1
+397 221 1
+ 397 221 1
+398 222 1
+ 398 222 1
+399 223 1
+ 399 223 1
+ 400 208 1
+ 400 208 1
+ 401 209 1
+ 401 209 1
+ 402 210 1
+ 402 210 1
+ 403 211 1
+ 403 211 1
+ 404 212 1
+ 404 212 1
+ 405 213 1
+ 405 213 1
+ 406 214 1
+ 406 214 1
+ 407 215 1
+ 407 215 1
+ 408 216 1
+ 408 216 1
+ 409 217 1
+ 409 217 1
+ 410 218 1
+ 410 218 1
+ 411 219 1
+ 411 219 1
+ 412 220 1
+ 412 220 1
+ 413 221 1
+ 413 221 1
+ 414 222 1
+ 414 222 1
+ 415 223 1
+ 415 223 1
+416 224 1
+ 416 224 1
+417 225 1
+ 417 225 1
+418 226 1
+ 418 226 1
+419 227 1
+ 419 227 1
+420 228 1
+ 420 228 1
+421 229 1
+ 421 229 1
+422 230 1
+ 422 230 1
+423 231 1
+ 423 231 1
+424 232 1
+ 424 232 1
+425 233 1
+ 425 233 1
+426 234 1
+ 426 234 1
+427 235 1
+ 427 235 1
+428 236 1
+ 428 236 1
+429 237 1
+ 429 237 1
+430 238 1
+ 430 238 1
+431 239 1
+ 431 239 1
+ 432 224 1
+ 432 224 1
+ 433 225 1
+ 433 225 1
+ 434 226 1
+ 434 226 1
+ 435 227 1
+ 435 227 1
+ 436 228 1
+ 436 228 1
+ 437 229 1
+ 437 229 1
+ 438 230 1
+ 438 230 1
+ 439 231 1
+ 439 231 1
+ 440 232 1
+ 440 232 1
+ 441 233 1
+ 441 233 1
+ 442 234 1
+ 442 234 1
+ 443 235 1
+ 443 235 1
+ 444 236 1
+ 444 236 1
+ 445 237 1
+ 445 237 1
+ 446 238 1
+ 446 238 1
+ 447 239 1
+ 447 239 1
+448 240 1
+ 448 240 1
+449 241 1
+ 449 241 1
+450 242 1
+ 450 242 1
+451 243 1
+ 451 243 1
+452 244 1
+ 452 244 1
+453 245 1
+ 453 245 1
+454 246 1
+ 454 246 1
+455 247 1
+ 455 247 1
+456 248 1
+ 456 248 1
+457 249 1
+ 457 249 1
+458 250 1
+ 458 250 1
+459 251 1
+ 459 251 1
+460 252 1
+ 460 252 1
+461 253 1
+ 461 253 1
+462 254 1
+ 462 254 1
+463 255 1
+ 463 255 1
+ 464 240 1
+ 464 240 1
+ 465 241 1
+ 465 241 1
+ 466 242 1
+ 466 242 1
+ 467 243 1
+ 467 243 1
+ 468 244 1
+ 468 244 1
+ 469 245 1
+ 469 245 1
+ 470 246 1
+ 470 246 1
+ 471 247 1
+ 471 247 1
+ 472 248 1
+ 472 248 1
+ 473 249 1
+ 473 249 1
+ 474 250 1
+ 474 250 1
+ 475 251 1
+ 475 251 1
+ 476 252 1
+ 476 252 1
+ 477 253 1
+ 477 253 1
+ 478 254 1
+ 478 254 1
+ 479 255 1
+ 479 255 1
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_0 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_0
new file mode 100644
index 0000000..3b57123
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_0
@@ -0,0 +1,374 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 1728 blocks interleaved at 4 blocks
+50f78fd6083bea22e664f78350e24f2f
+ddef760dcef4784565cfe7d76e5aa3ce
+2be7c8a52a34487ed03453f9a45c1efe
+be4d327cb8085aa69a446f15b42521c7
+0 16 4
+ 4 16 4
+ 8 16 4
+ 12 16 4
+16 20 4
+ 20 20 4
+ 24 20 4
+ 28 20 4
+32 24 4
+ 36 24 4
+ 40 24 4
+ 44 24 4
+48 28 4
+ 52 28 4
+ 56 28 4
+ 60 28 4
+64 32 4
+ 68 32 4
+ 72 32 4
+ 76 32 4
+80 36 4
+ 84 36 4
+ 88 36 4
+ 92 36 4
+96 40 4
+ 100 40 4
+ 104 40 4
+ 108 40 4
+112 44 4
+ 116 44 4
+ 120 44 4
+ 124 44 4
+128 48 4
+ 132 48 4
+ 136 48 4
+ 140 48 4
+144 52 4
+ 148 52 4
+ 152 52 4
+ 156 52 4
+160 56 4
+ 164 56 4
+ 168 56 4
+ 172 56 4
+176 60 4
+ 180 60 4
+ 184 60 4
+ 188 60 4
+192 64 4
+ 196 64 4
+ 200 64 4
+ 204 64 4
+208 68 4
+ 212 68 4
+ 216 68 4
+ 220 68 4
+224 72 4
+ 228 72 4
+ 232 72 4
+ 236 72 4
+240 76 4
+ 244 76 4
+ 248 76 4
+ 252 76 4
+256 80 4
+ 260 80 4
+ 264 80 4
+ 268 80 4
+272 84 4
+ 276 84 4
+ 280 84 4
+ 284 84 4
+288 88 4
+ 292 88 4
+ 296 88 4
+ 300 88 4
+304 92 4
+ 308 92 4
+ 312 92 4
+ 316 92 4
+320 96 4
+ 324 96 4
+ 328 96 4
+ 332 96 4
+336 100 4
+ 340 100 4
+ 344 100 4
+ 348 100 4
+352 104 4
+ 356 104 4
+ 360 104 4
+ 364 104 4
+368 108 4
+ 372 108 4
+ 376 108 4
+ 380 108 4
+384 112 4
+ 388 112 4
+ 392 112 4
+ 396 112 4
+400 116 4
+ 404 116 4
+ 408 116 4
+ 412 116 4
+416 120 4
+ 420 120 4
+ 424 120 4
+ 428 120 4
+432 124 4
+ 436 124 4
+ 440 124 4
+ 444 124 4
+448 128 4
+ 452 128 4
+ 456 128 4
+ 460 128 4
+464 132 4
+ 468 132 4
+ 472 132 4
+ 476 132 4
+480 136 4
+ 484 136 4
+ 488 136 4
+ 492 136 4
+496 140 4
+ 500 140 4
+ 504 140 4
+ 508 140 4
+512 144 4
+ 516 144 4
+ 520 144 4
+ 524 144 4
+528 148 4
+ 532 148 4
+ 536 148 4
+ 540 148 4
+544 152 4
+ 548 152 4
+ 552 152 4
+ 556 152 4
+560 156 4
+ 564 156 4
+ 568 156 4
+ 572 156 4
+576 160 4
+ 580 160 4
+ 584 160 4
+ 588 160 4
+592 164 4
+ 596 164 4
+ 600 164 4
+ 604 164 4
+608 168 4
+ 612 168 4
+ 616 168 4
+ 620 168 4
+624 172 4
+ 628 172 4
+ 632 172 4
+ 636 172 4
+640 176 4
+ 644 176 4
+ 648 176 4
+ 652 176 4
+656 180 4
+ 660 180 4
+ 664 180 4
+ 668 180 4
+672 184 4
+ 676 184 4
+ 680 184 4
+ 684 184 4
+688 188 4
+ 692 188 4
+ 696 188 4
+ 700 188 4
+704 192 4
+ 708 192 4
+ 712 192 4
+ 716 192 4
+720 196 4
+ 724 196 4
+ 728 196 4
+ 732 196 4
+736 200 4
+ 740 200 4
+ 744 200 4
+ 748 200 4
+752 204 4
+ 756 204 4
+ 760 204 4
+ 764 204 4
+768 208 4
+ 772 208 4
+ 776 208 4
+ 780 208 4
+784 212 4
+ 788 212 4
+ 792 212 4
+ 796 212 4
+800 216 4
+ 804 216 4
+ 808 216 4
+ 812 216 4
+816 220 4
+ 820 220 4
+ 824 220 4
+ 828 220 4
+832 224 4
+ 836 224 4
+ 840 224 4
+ 844 224 4
+848 228 4
+ 852 228 4
+ 856 228 4
+ 860 228 4
+864 232 4
+ 868 232 4
+ 872 232 4
+ 876 232 4
+880 236 4
+ 884 236 4
+ 888 236 4
+ 892 236 4
+896 240 4
+ 900 240 4
+ 904 240 4
+ 908 240 4
+912 244 4
+ 916 244 4
+ 920 244 4
+ 924 244 4
+928 248 4
+ 932 248 4
+ 936 248 4
+ 940 248 4
+944 252 4
+ 948 252 4
+ 952 252 4
+ 956 252 4
+960 256 4
+ 964 256 4
+968 260 4
+ 972 260 4
+976 264 4
+ 980 264 4
+984 268 4
+ 988 268 4
+992 272 4
+ 996 272 4
+1000 276 4
+ 1004 276 4
+1008 280 4
+ 1012 280 4
+1016 284 4
+ 1020 284 4
+1024 288 4
+ 1028 288 4
+1032 292 4
+ 1036 292 4
+1040 296 4
+ 1044 296 4
+1048 300 4
+ 1052 300 4
+1056 304 4
+ 1060 304 4
+1064 308 4
+ 1068 308 4
+1072 312 4
+ 1076 312 4
+1080 316 4
+ 1084 316 4
+1088 320 4
+ 1092 320 4
+1096 324 4
+ 1100 324 4
+1104 328 4
+ 1108 328 4
+1112 332 4
+ 1116 332 4
+1120 336 4
+ 1124 336 4
+1128 340 4
+ 1132 340 4
+1136 344 4
+ 1140 344 4
+1144 348 4
+ 1148 348 4
+1152 352 4
+ 1156 352 4
+1160 356 4
+ 1164 356 4
+1168 360 4
+ 1172 360 4
+1176 364 4
+ 1180 364 4
+1184 368 4
+ 1188 368 4
+1192 372 4
+ 1196 372 4
+1200 376 4
+ 1204 376 4
+1208 380 4
+ 1212 380 4
+1216 384 4
+ 1220 384 4
+1224 388 4
+ 1228 388 4
+1232 392 4
+ 1236 392 4
+1240 396 4
+ 1244 396 4
+1248 400 4
+ 1252 400 4
+1256 404 4
+ 1260 404 4
+1264 408 4
+ 1268 408 4
+1272 412 4
+ 1276 412 4
+1280 416 4
+ 1284 416 4
+1288 420 4
+ 1292 420 4
+1296 424 4
+ 1300 424 4
+1304 428 4
+ 1308 428 4
+1312 432 4
+ 1316 432 4
+1320 436 4
+ 1324 436 4
+1328 440 4
+ 1332 440 4
+1336 444 4
+ 1340 444 4
+1344 448 4
+ 1348 448 4
+1352 452 4
+ 1356 452 4
+1360 456 4
+ 1364 456 4
+1368 460 4
+ 1372 460 4
+1376 464 4
+ 1380 464 4
+1384 468 4
+ 1388 468 4
+1392 472 4
+ 1396 472 4
+1400 476 4
+ 1404 476 4
+1408 480 4
+ 1412 480 4
+1416 484 4
+ 1420 484 4
+1424 488 4
+ 1428 488 4
+1432 492 4
+ 1436 492 4
+1440 496 4
+ 1444 496 4
+1448 500 4
+ 1452 500 4
+1456 504 4
+ 1460 504 4
+1464 508 4
+ 1468 508 260
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_2 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_2
new file mode 100644
index 0000000..7cccecf
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_2
@@ -0,0 +1,248 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 960 blocks interleaved at 4 blocks
+c7d32c7a0aacde7259cac3ab214bda77
+ddef760dcef4784565cfe7d76e5aa3ce
+809aae6bd417fb347af3832ab9cf7197
+be4d327cb8085aa69a446f15b42521c7
+0 16 257
+ 0 256 512
+1 17 3
+ 4 16 4
+ 8 16 4
+ 12 16 4
+16 20 4
+ 20 20 4
+ 24 20 4
+ 28 20 4
+32 24 4
+ 36 24 4
+ 40 24 4
+ 44 24 4
+48 28 4
+ 52 28 4
+ 56 28 4
+ 60 28 4
+64 32 4
+ 68 32 4
+ 72 32 4
+ 76 32 4
+80 36 4
+ 84 36 4
+ 88 36 4
+ 92 36 4
+96 40 4
+ 100 40 4
+ 104 40 4
+ 108 40 4
+112 44 4
+ 116 44 4
+ 120 44 4
+ 124 44 4
+128 48 4
+ 132 48 4
+ 136 48 4
+ 140 48 4
+144 52 4
+ 148 52 4
+ 152 52 4
+ 156 52 4
+160 56 4
+ 164 56 4
+ 168 56 4
+ 172 56 4
+176 60 4
+ 180 60 4
+ 184 60 4
+ 188 60 4
+192 64 4
+ 196 64 4
+ 200 64 4
+ 204 64 4
+208 68 4
+ 212 68 4
+ 216 68 4
+ 220 68 4
+224 72 4
+ 228 72 4
+ 232 72 4
+ 236 72 4
+240 76 4
+ 244 76 4
+ 248 76 4
+ 252 76 4
+256 80 4
+ 260 80 4
+ 264 80 4
+ 268 80 4
+272 84 4
+ 276 84 4
+ 280 84 4
+ 284 84 4
+288 88 4
+ 292 88 4
+ 296 88 4
+ 300 88 4
+304 92 4
+ 308 92 4
+ 312 92 4
+ 316 92 4
+320 96 4
+ 324 96 4
+ 328 96 4
+ 332 96 4
+336 100 4
+ 340 100 4
+ 344 100 4
+ 348 100 4
+352 104 4
+ 356 104 4
+ 360 104 4
+ 364 104 4
+368 108 4
+ 372 108 4
+ 376 108 4
+ 380 108 4
+384 112 4
+ 388 112 4
+ 392 112 4
+ 396 112 4
+400 116 4
+ 404 116 4
+ 408 116 4
+ 412 116 4
+416 120 4
+ 420 120 4
+ 424 120 4
+ 428 120 4
+432 124 4
+ 436 124 4
+ 440 124 4
+ 444 124 4
+448 128 4
+ 452 128 4
+ 456 128 4
+ 460 128 4
+464 132 4
+ 468 132 4
+ 472 132 4
+ 476 132 4
+480 136 4
+ 484 136 4
+ 488 136 4
+ 492 136 4
+496 140 4
+ 500 140 4
+ 504 140 4
+ 508 140 4
+512 144 4
+ 516 144 4
+ 520 144 4
+ 524 144 4
+528 148 4
+ 532 148 4
+ 536 148 4
+ 540 148 4
+544 152 4
+ 548 152 4
+ 552 152 4
+ 556 152 4
+560 156 4
+ 564 156 4
+ 568 156 4
+ 572 156 4
+576 160 4
+ 580 160 4
+ 584 160 4
+ 588 160 4
+592 164 4
+ 596 164 4
+ 600 164 4
+ 604 164 4
+608 168 4
+ 612 168 4
+ 616 168 4
+ 620 168 4
+624 172 4
+ 628 172 4
+ 632 172 4
+ 636 172 4
+640 176 4
+ 644 176 4
+ 648 176 4
+ 652 176 4
+656 180 4
+ 660 180 4
+ 664 180 4
+ 668 180 4
+672 184 4
+ 676 184 4
+ 680 184 4
+ 684 184 4
+688 188 4
+ 692 188 4
+ 696 188 4
+ 700 188 4
+704 192 4
+ 708 192 4
+ 712 192 4
+ 716 192 4
+720 196 4
+ 724 196 4
+ 728 196 4
+ 732 196 4
+736 200 4
+ 740 200 4
+ 744 200 4
+ 748 200 4
+752 204 4
+ 756 204 4
+ 760 204 4
+ 764 204 4
+768 208 4
+ 772 208 4
+ 776 208 4
+ 780 208 4
+784 212 4
+ 788 212 4
+ 792 212 4
+ 796 212 4
+800 216 4
+ 804 216 4
+ 808 216 4
+ 812 216 4
+816 220 4
+ 820 220 4
+ 824 220 4
+ 828 220 4
+832 224 4
+ 836 224 4
+ 840 224 4
+ 844 224 4
+848 228 4
+ 852 228 4
+ 856 228 4
+ 860 228 4
+864 232 4
+ 868 232 4
+ 872 232 4
+ 876 232 4
+880 236 4
+ 884 236 4
+ 888 236 4
+ 892 236 4
+896 240 4
+ 900 240 4
+ 904 240 4
+ 908 240 4
+912 244 4
+ 916 244 4
+ 920 244 4
+ 924 244 4
+928 248 4
+ 932 248 4
+ 936 248 4
+ 940 248 4
+944 252 4
+ 948 252 4
+ 952 252 4
+ 956 252 4
diff --git a/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_4 b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_4
new file mode 100644
index 0000000..db2dcd8
--- /dev/null
+++ b/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_4
@@ -0,0 +1,966 @@
+$FreeBSD$
+ccd3: 4 components (md90, md91, md92, md93), 480 blocks interleaved at 4 blocks
+ab2274c3b7241753a015c243417c0c29
+8db0b90ec1fa54feca98ad8fd292b07c
+9593c41bb3a0f6589cf9389d80670cbe
+8db0b90ec1fa54feca98ad8fd292b07c
+0 16 257
+ 0 16 513
+1 17 1
+ 1 17 1
+2 18 1
+ 2 18 1
+3 19 1
+ 3 19 1
+ 4 16 1
+ 4 16 1
+ 5 17 1
+ 5 17 1
+ 6 18 1
+ 6 18 1
+ 7 19 1
+ 7 19 1
+8 20 1
+ 8 20 1
+9 21 1
+ 9 21 1
+10 22 1
+ 10 22 1
+11 23 1
+ 11 23 1
+ 12 20 1
+ 12 20 1
+ 13 21 1
+ 13 21 1
+ 14 22 1
+ 14 22 1
+ 15 23 1
+ 15 23 1
+16 24 1
+ 16 24 1
+17 25 1
+ 17 25 1
+18 26 1
+ 18 26 1
+19 27 1
+ 19 27 1
+ 20 24 1
+ 20 24 1
+ 21 25 1
+ 21 25 1
+ 22 26 1
+ 22 26 1
+ 23 27 1
+ 23 27 1
+24 28 1
+ 24 28 1
+25 29 1
+ 25 29 1
+26 30 1
+ 26 30 1
+27 31 1
+ 27 31 1
+ 28 28 1
+ 28 28 1
+ 29 29 1
+ 29 29 1
+ 30 30 1
+ 30 30 1
+ 31 31 1
+ 31 31 1
+32 32 1
+ 32 32 1
+33 33 1
+ 33 33 1
+34 34 1
+ 34 34 1
+35 35 1
+ 35 35 1
+ 36 32 1
+ 36 32 1
+ 37 33 1
+ 37 33 1
+ 38 34 1
+ 38 34 1
+ 39 35 1
+ 39 35 1
+40 36 1
+ 40 36 1
+41 37 1
+ 41 37 1
+42 38 1
+ 42 38 1
+43 39 1
+ 43 39 1
+ 44 36 1
+ 44 36 1
+ 45 37 1
+ 45 37 1
+ 46 38 1
+ 46 38 1
+ 47 39 1
+ 47 39 1
+48 40 1
+ 48 40 1
+49 41 1
+ 49 41 1
+50 42 1
+ 50 42 1
+51 43 1
+ 51 43 1
+ 52 40 1
+ 52 40 1
+ 53 41 1
+ 53 41 1
+ 54 42 1
+ 54 42 1
+ 55 43 1
+ 55 43 1
+56 44 1
+ 56 44 1
+57 45 1
+ 57 45 1
+58 46 1
+ 58 46 1
+59 47 1
+ 59 47 1
+ 60 44 1
+ 60 44 1
+ 61 45 1
+ 61 45 1
+ 62 46 1
+ 62 46 1
+ 63 47 1
+ 63 47 1
+64 48 1
+ 64 48 1
+65 49 1
+ 65 49 1
+66 50 1
+ 66 50 1
+67 51 1
+ 67 51 1
+ 68 48 1
+ 68 48 1
+ 69 49 1
+ 69 49 1
+ 70 50 1
+ 70 50 1
+ 71 51 1
+ 71 51 1
+72 52 1
+ 72 52 1
+73 53 1
+ 73 53 1
+74 54 1
+ 74 54 1
+75 55 1
+ 75 55 1
+ 76 52 1
+ 76 52 1
+ 77 53 1
+ 77 53 1
+ 78 54 1
+ 78 54 1
+ 79 55 1
+ 79 55 1
+80 56 1
+ 80 56 1
+81 57 1
+ 81 57 1
+82 58 1
+ 82 58 1
+83 59 1
+ 83 59 1
+ 84 56 1
+ 84 56 1
+ 85 57 1
+ 85 57 1
+ 86 58 1
+ 86 58 1
+ 87 59 1
+ 87 59 1
+88 60 1
+ 88 60 1
+89 61 1
+ 89 61 1
+90 62 1
+ 90 62 1
+91 63 1
+ 91 63 1
+ 92 60 1
+ 92 60 1
+ 93 61 1
+ 93 61 1
+ 94 62 1
+ 94 62 1
+ 95 63 1
+ 95 63 1
+96 64 1
+ 96 64 1
+97 65 1
+ 97 65 1
+98 66 1
+ 98 66 1
+99 67 1
+ 99 67 1
+ 100 64 1
+ 100 64 1
+ 101 65 1
+ 101 65 1
+ 102 66 1
+ 102 66 1
+ 103 67 1
+ 103 67 1
+104 68 1
+ 104 68 1
+105 69 1
+ 105 69 1
+106 70 1
+ 106 70 1
+107 71 1
+ 107 71 1
+ 108 68 1
+ 108 68 1
+ 109 69 1
+ 109 69 1
+ 110 70 1
+ 110 70 1
+ 111 71 1
+ 111 71 1
+112 72 1
+ 112 72 1
+113 73 1
+ 113 73 1
+114 74 1
+ 114 74 1
+115 75 1
+ 115 75 1
+ 116 72 1
+ 116 72 1
+ 117 73 1
+ 117 73 1
+ 118 74 1
+ 118 74 1
+ 119 75 1
+ 119 75 1
+120 76 1
+ 120 76 1
+121 77 1
+ 121 77 1
+122 78 1
+ 122 78 1
+123 79 1
+ 123 79 1
+ 124 76 1
+ 124 76 1
+ 125 77 1
+ 125 77 1
+ 126 78 1
+ 126 78 1
+ 127 79 1
+ 127 79 1
+128 80 1
+ 128 80 1
+129 81 1
+ 129 81 1
+130 82 1
+ 130 82 1
+131 83 1
+ 131 83 1
+ 132 80 1
+ 132 80 1
+ 133 81 1
+ 133 81 1
+ 134 82 1
+ 134 82 1
+ 135 83 1
+ 135 83 1
+136 84 1
+ 136 84 1
+137 85 1
+ 137 85 1
+138 86 1
+ 138 86 1
+139 87 1
+ 139 87 1
+ 140 84 1
+ 140 84 1
+ 141 85 1
+ 141 85 1
+ 142 86 1
+ 142 86 1
+ 143 87 1
+ 143 87 1
+144 88 1
+ 144 88 1
+145 89 1
+ 145 89 1
+146 90 1
+ 146 90 1
+147 91 1
+ 147 91 1
+ 148 88 1
+ 148 88 1
+ 149 89 1
+ 149 89 1
+ 150 90 1
+ 150 90 1
+ 151 91 1
+ 151 91 1
+152 92 1
+ 152 92 1
+153 93 1
+ 153 93 1
+154 94 1
+ 154 94 1
+155 95 1
+ 155 95 1
+ 156 92 1
+ 156 92 1
+ 157 93 1
+ 157 93 1
+ 158 94 1
+ 158 94 1
+ 159 95 1
+ 159 95 1
+160 96 1
+ 160 96 1
+161 97 1
+ 161 97 1
+162 98 1
+ 162 98 1
+163 99 1
+ 163 99 1
+ 164 96 1
+ 164 96 1
+ 165 97 1
+ 165 97 1
+ 166 98 1
+ 166 98 1
+ 167 99 1
+ 167 99 1
+168 100 1
+ 168 100 1
+169 101 1
+ 169 101 1
+170 102 1
+ 170 102 1
+171 103 1
+ 171 103 1
+ 172 100 1
+ 172 100 1
+ 173 101 1
+ 173 101 1
+ 174 102 1
+ 174 102 1
+ 175 103 1
+ 175 103 1
+176 104 1
+ 176 104 1
+177 105 1
+ 177 105 1
+178 106 1
+ 178 106 1
+179 107 1
+ 179 107 1
+ 180 104 1
+ 180 104 1
+ 181 105 1
+ 181 105 1
+ 182 106 1
+ 182 106 1
+ 183 107 1
+ 183 107 1
+184 108 1
+ 184 108 1
+185 109 1
+ 185 109 1
+186 110 1
+ 186 110 1
+187 111 1
+ 187 111 1
+ 188 108 1
+ 188 108 1
+ 189 109 1
+ 189 109 1
+ 190 110 1
+ 190 110 1
+ 191 111 1
+ 191 111 1
+192 112 1
+ 192 112 1
+193 113 1
+ 193 113 1
+194 114 1
+ 194 114 1
+195 115 1
+ 195 115 1
+ 196 112 1
+ 196 112 1
+ 197 113 1
+ 197 113 1
+ 198 114 1
+ 198 114 1
+ 199 115 1
+ 199 115 1
+200 116 1
+ 200 116 1
+201 117 1
+ 201 117 1
+202 118 1
+ 202 118 1
+203 119 1
+ 203 119 1
+ 204 116 1
+ 204 116 1
+ 205 117 1
+ 205 117 1
+ 206 118 1
+ 206 118 1
+ 207 119 1
+ 207 119 1
+208 120 1
+ 208 120 1
+209 121 1
+ 209 121 1
+210 122 1
+ 210 122 1
+211 123 1
+ 211 123 1
+ 212 120 1
+ 212 120 1
+ 213 121 1
+ 213 121 1
+ 214 122 1
+ 214 122 1
+ 215 123 1
+ 215 123 1
+216 124 1
+ 216 124 1
+217 125 1
+ 217 125 1
+218 126 1
+ 218 126 1
+219 127 1
+ 219 127 1
+ 220 124 1
+ 220 124 1
+ 221 125 1
+ 221 125 1
+ 222 126 1
+ 222 126 1
+ 223 127 1
+ 223 127 1
+224 128 1
+ 224 128 1
+225 129 1
+ 225 129 1
+226 130 1
+ 226 130 1
+227 131 1
+ 227 131 1
+ 228 128 1
+ 228 128 1
+ 229 129 1
+ 229 129 1
+ 230 130 1
+ 230 130 1
+ 231 131 1
+ 231 131 1
+232 132 1
+ 232 132 1
+233 133 1
+ 233 133 1
+234 134 1
+ 234 134 1
+235 135 1
+ 235 135 1
+ 236 132 1
+ 236 132 1
+ 237 133 1
+ 237 133 1
+ 238 134 1
+ 238 134 1
+ 239 135 1
+ 239 135 1
+240 136 1
+ 240 136 1
+241 137 1
+ 241 137 1
+242 138 1
+ 242 138 1
+243 139 1
+ 243 139 1
+ 244 136 1
+ 244 136 1
+ 245 137 1
+ 245 137 1
+ 246 138 1
+ 246 138 1
+ 247 139 1
+ 247 139 1
+248 140 1
+ 248 140 1
+249 141 1
+ 249 141 1
+250 142 1
+ 250 142 1
+251 143 1
+ 251 143 1
+ 252 140 1
+ 252 140 1
+ 253 141 1
+ 253 141 1
+ 254 142 1
+ 254 142 1
+ 255 143 1
+ 255 143 1
+256 144 1
+ 256 144 1
+257 145 1
+ 257 145 1
+258 146 1
+ 258 146 1
+259 147 1
+ 259 147 1
+ 260 144 1
+ 260 144 1
+ 261 145 1
+ 261 145 1
+ 262 146 1
+ 262 146 1
+ 263 147 1
+ 263 147 1
+264 148 1
+ 264 148 1
+265 149 1
+ 265 149 1
+266 150 1
+ 266 150 1
+267 151 1
+ 267 151 1
+ 268 148 1
+ 268 148 1
+ 269 149 1
+ 269 149 1
+ 270 150 1
+ 270 150 1
+ 271 151 1
+ 271 151 1
+272 152 1
+ 272 152 1
+273 153 1
+ 273 153 1
+274 154 1
+ 274 154 1
+275 155 1
+ 275 155 1
+ 276 152 1
+ 276 152 1
+ 277 153 1
+ 277 153 1
+ 278 154 1
+ 278 154 1
+ 279 155 1
+ 279 155 1
+280 156 1
+ 280 156 1
+281 157 1
+ 281 157 1
+282 158 1
+ 282 158 1
+283 159 1
+ 283 159 1
+ 284 156 1
+ 284 156 1
+ 285 157 1
+ 285 157 1
+ 286 158 1
+ 286 158 1
+ 287 159 1
+ 287 159 1
+288 160 1
+ 288 160 1
+289 161 1
+ 289 161 1
+290 162 1
+ 290 162 1
+291 163 1
+ 291 163 1
+ 292 160 1
+ 292 160 1
+ 293 161 1
+ 293 161 1
+ 294 162 1
+ 294 162 1
+ 295 163 1
+ 295 163 1
+296 164 1
+ 296 164 1
+297 165 1
+ 297 165 1
+298 166 1
+ 298 166 1
+299 167 1
+ 299 167 1
+ 300 164 1
+ 300 164 1
+ 301 165 1
+ 301 165 1
+ 302 166 1
+ 302 166 1
+ 303 167 1
+ 303 167 1
+304 168 1
+ 304 168 1
+305 169 1
+ 305 169 1
+306 170 1
+ 306 170 1
+307 171 1
+ 307 171 1
+ 308 168 1
+ 308 168 1
+ 309 169 1
+ 309 169 1
+ 310 170 1
+ 310 170 1
+ 311 171 1
+ 311 171 1
+312 172 1
+ 312 172 1
+313 173 1
+ 313 173 1
+314 174 1
+ 314 174 1
+315 175 1
+ 315 175 1
+ 316 172 1
+ 316 172 1
+ 317 173 1
+ 317 173 1
+ 318 174 1
+ 318 174 1
+ 319 175 1
+ 319 175 1
+320 176 1
+ 320 176 1
+321 177 1
+ 321 177 1
+322 178 1
+ 322 178 1
+323 179 1
+ 323 179 1
+ 324 176 1
+ 324 176 1
+ 325 177 1
+ 325 177 1
+ 326 178 1
+ 326 178 1
+ 327 179 1
+ 327 179 1
+328 180 1
+ 328 180 1
+329 181 1
+ 329 181 1
+330 182 1
+ 330 182 1
+331 183 1
+ 331 183 1
+ 332 180 1
+ 332 180 1
+ 333 181 1
+ 333 181 1
+ 334 182 1
+ 334 182 1
+ 335 183 1
+ 335 183 1
+336 184 1
+ 336 184 1
+337 185 1
+ 337 185 1
+338 186 1
+ 338 186 1
+339 187 1
+ 339 187 1
+ 340 184 1
+ 340 184 1
+ 341 185 1
+ 341 185 1
+ 342 186 1
+ 342 186 1
+ 343 187 1
+ 343 187 1
+344 188 1
+ 344 188 1
+345 189 1
+ 345 189 1
+346 190 1
+ 346 190 1
+347 191 1
+ 347 191 1
+ 348 188 1
+ 348 188 1
+ 349 189 1
+ 349 189 1
+ 350 190 1
+ 350 190 1
+ 351 191 1
+ 351 191 1
+352 192 1
+ 352 192 1
+353 193 1
+ 353 193 1
+354 194 1
+ 354 194 1
+355 195 1
+ 355 195 1
+ 356 192 1
+ 356 192 1
+ 357 193 1
+ 357 193 1
+ 358 194 1
+ 358 194 1
+ 359 195 1
+ 359 195 1
+360 196 1
+ 360 196 1
+361 197 1
+ 361 197 1
+362 198 1
+ 362 198 1
+363 199 1
+ 363 199 1
+ 364 196 1
+ 364 196 1
+ 365 197 1
+ 365 197 1
+ 366 198 1
+ 366 198 1
+ 367 199 1
+ 367 199 1
+368 200 1
+ 368 200 1
+369 201 1
+ 369 201 1
+370 202 1
+ 370 202 1
+371 203 1
+ 371 203 1
+ 372 200 1
+ 372 200 1
+ 373 201 1
+ 373 201 1
+ 374 202 1
+ 374 202 1
+ 375 203 1
+ 375 203 1
+376 204 1
+ 376 204 1
+377 205 1
+ 377 205 1
+378 206 1
+ 378 206 1
+379 207 1
+ 379 207 1
+ 380 204 1
+ 380 204 1
+ 381 205 1
+ 381 205 1
+ 382 206 1
+ 382 206 1
+ 383 207 1
+ 383 207 1
+384 208 1
+ 384 208 1
+385 209 1
+ 385 209 1
+386 210 1
+ 386 210 1
+387 211 1
+ 387 211 1
+ 388 208 1
+ 388 208 1
+ 389 209 1
+ 389 209 1
+ 390 210 1
+ 390 210 1
+ 391 211 1
+ 391 211 1
+392 212 1
+ 392 212 1
+393 213 1
+ 393 213 1
+394 214 1
+ 394 214 1
+395 215 1
+ 395 215 1
+ 396 212 1
+ 396 212 1
+ 397 213 1
+ 397 213 1
+ 398 214 1
+ 398 214 1
+ 399 215 1
+ 399 215 1
+400 216 1
+ 400 216 1
+401 217 1
+ 401 217 1
+402 218 1
+ 402 218 1
+403 219 1
+ 403 219 1
+ 404 216 1
+ 404 216 1
+ 405 217 1
+ 405 217 1
+ 406 218 1
+ 406 218 1
+ 407 219 1
+ 407 219 1
+408 220 1
+ 408 220 1
+409 221 1
+ 409 221 1
+410 222 1
+ 410 222 1
+411 223 1
+ 411 223 1
+ 412 220 1
+ 412 220 1
+ 413 221 1
+ 413 221 1
+ 414 222 1
+ 414 222 1
+ 415 223 1
+ 415 223 1
+416 224 1
+ 416 224 1
+417 225 1
+ 417 225 1
+418 226 1
+ 418 226 1
+419 227 1
+ 419 227 1
+ 420 224 1
+ 420 224 1
+ 421 225 1
+ 421 225 1
+ 422 226 1
+ 422 226 1
+ 423 227 1
+ 423 227 1
+424 228 1
+ 424 228 1
+425 229 1
+ 425 229 1
+426 230 1
+ 426 230 1
+427 231 1
+ 427 231 1
+ 428 228 1
+ 428 228 1
+ 429 229 1
+ 429 229 1
+ 430 230 1
+ 430 230 1
+ 431 231 1
+ 431 231 1
+432 232 1
+ 432 232 1
+433 233 1
+ 433 233 1
+434 234 1
+ 434 234 1
+435 235 1
+ 435 235 1
+ 436 232 1
+ 436 232 1
+ 437 233 1
+ 437 233 1
+ 438 234 1
+ 438 234 1
+ 439 235 1
+ 439 235 1
+440 236 1
+ 440 236 1
+441 237 1
+ 441 237 1
+442 238 1
+ 442 238 1
+443 239 1
+ 443 239 1
+ 444 236 1
+ 444 236 1
+ 445 237 1
+ 445 237 1
+ 446 238 1
+ 446 238 1
+ 447 239 1
+ 447 239 1
+448 240 1
+ 448 240 1
+449 241 1
+ 449 241 1
+450 242 1
+ 450 242 1
+451 243 1
+ 451 243 1
+ 452 240 1
+ 452 240 1
+ 453 241 1
+ 453 241 1
+ 454 242 1
+ 454 242 1
+ 455 243 1
+ 455 243 1
+456 244 1
+ 456 244 1
+457 245 1
+ 457 245 1
+458 246 1
+ 458 246 1
+459 247 1
+ 459 247 1
+ 460 244 1
+ 460 244 1
+ 461 245 1
+ 461 245 1
+ 462 246 1
+ 462 246 1
+ 463 247 1
+ 463 247 1
+464 248 1
+ 464 248 1
+465 249 1
+ 465 249 1
+466 250 1
+ 466 250 1
+467 251 1
+ 467 251 1
+ 468 248 1
+ 468 248 1
+ 469 249 1
+ 469 249 1
+ 470 250 1
+ 470 250 1
+ 471 251 1
+ 471 251 1
+472 252 1
+ 472 252 1
+473 253 1
+ 473 253 1
+474 254 1
+ 474 254 1
+475 255 1
+ 475 255 1
+ 476 252 1
+ 476 252 1
+ 477 253 1
+ 477 253 1
+ 478 254 1
+ 478 254 1
+ 479 255 1
+ 479 255 1
diff --git a/tools/regression/ethernet/ethermulti/Makefile b/tools/regression/ethernet/ethermulti/Makefile
new file mode 100644
index 0000000..e0770b6
--- /dev/null
+++ b/tools/regression/ethernet/ethermulti/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= ethermulti
+SRCS+= ethermulti.c
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/ethernet/ethermulti/ethermulti.c b/tools/regression/ethernet/ethermulti/ethermulti.c
new file mode 100644
index 0000000..61f0cdd
--- /dev/null
+++ b/tools/regression/ethernet/ethermulti/ethermulti.c
@@ -0,0 +1,256 @@
+/*-
+ * Copyright (c) 2007 Bruce M. Simpson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/if_types.h>
+#include <net/ethernet.h>
+
+#include <err.h>
+#include <errno.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <ifaddrs.h>
+
+static int dorandom = 0;
+static int verbose = 0;
+static char *ifname = NULL;
+
+/*
+ * The test tool exercises IP-level socket options by interrogating the
+ * getsockopt()/setsockopt() APIs. It does not currently test that the
+ * intended semantics of each option are implemented (i.e., that setting IP
+ * options on the socket results in packets with the desired IP options in
+ * it).
+ */
+
+/*
+ * get_socket() is a wrapper function that returns a socket of the specified
+ * type, and created with or without restored root privilege (if running
+ * with a real uid of root and an effective uid of some other user). This
+ * us to test whether the same rights are granted using a socket with a
+ * privileged cached credential vs. a socket with a regular credential.
+ */
+#define PRIV_ASIS 0
+#define PRIV_GETROOT 1
+static int
+get_socket_unpriv(int type)
+{
+
+ return (socket(PF_INET, type, 0));
+}
+
+static int
+get_socket_priv(int type)
+{
+ uid_t olduid;
+ int sock;
+
+ if (getuid() != 0)
+ errx(-1, "get_sock_priv: running without real uid 0");
+
+ olduid = geteuid();
+ if (seteuid(0) < 0)
+ err(-1, "get_sock_priv: seteuid(0)");
+
+ sock = socket(PF_INET, type, 0);
+
+ if (seteuid(olduid) < 0)
+ err(-1, "get_sock_priv: seteuid(%d)", olduid);
+
+ return (sock);
+}
+
+static int
+get_socket(int type, int priv)
+{
+
+ if (priv)
+ return (get_socket_priv(type));
+ else
+ return (get_socket_unpriv(type));
+}
+
+union sockunion {
+ struct sockaddr_storage ss;
+ struct sockaddr sa;
+ struct sockaddr_dl sdl;
+};
+typedef union sockunion sockunion_t;
+
+static void
+test_ether_multi(int sock)
+{
+ struct ifreq ifr;
+ struct sockaddr_dl *dlp;
+ struct ether_addr ea;
+ struct ifmaddrs *ifma, *ifmap;
+ int found;
+
+ /* Choose an 802 multicast address. */
+ if (dorandom) {
+ uint32_t mac4;
+
+ srandomdev();
+ mac4 = random();
+ ea.octet[0] = 0x01;
+ ea.octet[1] = 0x80;
+ ea.octet[2] = ((mac4 >> 24 & 0xFF));
+ ea.octet[3] = ((mac4 >> 16 & 0xFF));
+ ea.octet[4] = ((mac4 >> 8 & 0xFF));
+ ea.octet[5] = (mac4 & 0xFF);
+ } else {
+ struct ether_addr *nep = ether_aton("01:80:DE:FA:CA:7E");
+ ea = *nep;
+ }
+
+ /* Fill out ifreq, and fill out 802 group address. */
+ memset(&ifr, 0, sizeof(struct ifreq));
+ strlcpy(&ifr.ifr_name[0], ifname, IFNAMSIZ);
+ dlp = (struct sockaddr_dl *)&ifr.ifr_addr;
+ memset(dlp, 0, sizeof(struct sockaddr_dl));
+ dlp->sdl_len = sizeof(struct sockaddr_dl);
+ dlp->sdl_family = AF_LINK;
+ dlp->sdl_alen = sizeof(struct ether_addr);
+ memcpy(LLADDR(dlp), &ea, sizeof(struct ether_addr));
+
+ /* Join an 802 group. */
+ if (ioctl(sock, SIOCADDMULTI, &ifr) < 0) {
+ warn("can't add ethernet multicast membership");
+ return;
+ }
+
+ /* Check that we joined the group by calling getifmaddrs(). */
+ found = 0;
+ if (getifmaddrs(&ifmap) != 0) {
+ warn("getifmaddrs()");
+ } else {
+ for (ifma = ifmap; ifma; ifma = ifma->ifma_next) {
+ sockunion_t *psa = (sockunion_t *)ifma->ifma_addr;
+ if (ifma->ifma_name == NULL || psa == NULL)
+ continue;
+
+ if (psa->sa.sa_family != AF_LINK ||
+ psa->sdl.sdl_alen != ETHER_ADDR_LEN)
+ continue;
+
+ if (bcmp(LLADDR(&psa->sdl), LLADDR(dlp),
+ ETHER_ADDR_LEN) == 0) {
+ found = 1;
+ break;
+ }
+ }
+ freeifmaddrs(ifmap);
+ }
+ if (!found) {
+ warnx("group membership for %s not returned by getifmaddrs()",
+ ether_ntoa(&ea));
+ }
+
+ /* Fill out ifreq, and fill out 802 group address. */
+ memset(&ifr, 0, sizeof(struct ifreq));
+ strlcpy(&ifr.ifr_name[0], ifname, IFNAMSIZ);
+ dlp = (struct sockaddr_dl *)&ifr.ifr_addr;
+ memset(dlp, 0, sizeof(struct sockaddr_dl));
+ dlp->sdl_len = sizeof(struct sockaddr_dl);
+ dlp->sdl_family = AF_LINK;
+ dlp->sdl_alen = sizeof(struct ether_addr);
+ memcpy(LLADDR(dlp), &ea, sizeof(struct ether_addr));
+
+ /* Leave an 802 group. */
+ if (ioctl(sock, SIOCDELMULTI, &ifr) < 0)
+ warn("can't delete ethernet multicast membership");
+
+}
+
+static void
+testsuite(int priv)
+{
+ int sock;
+
+ sock = get_socket(SOCK_DGRAM, 0);
+ if (sock == -1)
+ err(-1, "get_socket(SOCK_DGRAM) for test_ether_multi()", priv);
+ test_ether_multi(sock);
+ close(sock);
+}
+
+static void
+usage()
+{
+
+ fprintf(stderr, "usage: ethermulti -i ifname [-r] [-v]\n");
+ exit(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int ch;
+
+ while ((ch = getopt(argc, argv, "i:rv")) != -1) {
+ switch (ch) {
+ case 'i':
+ ifname = optarg;
+ break;
+ case 'r':
+ dorandom = 1; /* introduce non-determinism */
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ default:
+ usage();
+ }
+ }
+ if (ifname == NULL)
+ usage();
+
+ printf("1..1\n");
+ if (geteuid() != 0) {
+ errx(1, "Not running as root, can't run tests as non-root");
+ /*NOTREACHED*/
+ } else {
+ fprintf(stderr,
+ "Running tests with ruid %d euid %d sock uid 0\n",
+ getuid(), geteuid());
+ testsuite(PRIV_ASIS);
+ }
+ printf("ok 1 - ethermulti\n");
+ exit(0);
+}
diff --git a/tools/regression/execve/Makefile b/tools/regression/execve/Makefile
new file mode 100644
index 0000000..b553b33
--- /dev/null
+++ b/tools/regression/execve/Makefile
@@ -0,0 +1,70 @@
+# $FreeBSD$
+
+PROG= doexec
+NO_MAN=
+
+RP= ./${PROG}
+TD= ${.CURDIR}/tests
+
+TESTSCRIPTS= nonexistshell devnullscript badinterplen goodscript \
+ scriptarg scriptarg-nospace
+CLEANFILES= goodaout truncaout sparseaout empty ${TESTSCRIPTS}
+
+all: ${PROG} goodaout ${TESTSCRIPTS}
+
+.for x in ${TESTSCRIPTS}
+${x}: ${TD}/${x}
+ cp ${TD}/${x} .
+ chmod +x ${x}
+.endfor
+
+regress: test-empty test-nonexist test-nonexistshell \
+ test-devnullscript test-badinterplen test-goodscript \
+ test-scriptarg test-scriptarg-nospace test-goodaout \
+ test-truncaout test-sparseaout
+
+test-empty: ${PROG}
+ rm -f empty
+ touch empty
+ chmod +x empty
+ ${RP} empty | grep 'Exec format error'
+
+test-nonexist: ${PROG}
+ ${RP} ${TD}/nonexistent | grep 'No such file or directory'
+
+test-nonexistshell: ${PROG} nonexistshell
+ ${RP} nonexistshell | grep 'No such file or directory'
+
+test-devnullscript: ${PROG} devnullscript
+ ${RP} devnullscript | grep 'Permission denied'
+
+test-badinterplen: ${PROG} badinterplen
+ ${RP} badinterplen | grep 'No such file or directory'
+
+test-goodscript: ${PROG} goodscript
+ ${RP} goodscript | grep 'succeeded'
+
+test-scriptarg: ${PROG} scriptarg
+ ${RP} scriptarg 2>&1 | grep '+ echo succeeded'
+
+test-scriptarg-nospace: ${PROG} scriptarg-nospace
+ ${RP} scriptarg-nospace 2>&1 | grep '+ echo succeeded'
+
+goodaout: ${TD}/goodaout.c
+ ${CC} -static -o ${.TARGET} ${TD}/goodaout.c
+
+test-goodaout: ${PROG} goodaout
+ ${RP} goodaout | grep 'succeeded'
+
+test-truncaout: ${PROG} goodaout
+ truncate -s 16 truncaout
+ chmod a+x truncaout
+ ${RP} truncaout | grep 'Exec format error'
+
+test-sparseaout: ${PROG}
+ /bin/rm -rf sparseaout
+ truncate -s 20480 sparseaout
+ chmod a+x sparseaout
+ ${RP} sparseaout | grep 'Exec format error'
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/execve/doexec.c b/tools/regression/execve/doexec.c
new file mode 100644
index 0000000..0aa82ec
--- /dev/null
+++ b/tools/regression/execve/doexec.c
@@ -0,0 +1,58 @@
+/* $NetBSD: doexec.c,v 1.8 2003/07/26 19:38:48 salo Exp $ */
+
+/*
+ * Copyright (c) 1993 Christopher G. Demetriou
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed for the
+ * NetBSD Project. See http://www.NetBSD.org/ for
+ * information about NetBSD.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ if (argc != 2) {
+ fprintf(stderr, "usage: %s <progname>\n", argv[0]);
+ exit(2);
+ }
+
+ unsetenv("LANG"); /* we compare C error strings */
+ if (execve(argv[1], &argv[1], NULL) == -1) {
+ printf("%s\n", strerror(errno));
+ exit(1);
+ }
+}
diff --git a/tools/regression/execve/execve.t b/tools/regression/execve/execve.t
new file mode 100644
index 0000000..dd2be9a
--- /dev/null
+++ b/tools/regression/execve/execve.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+cmd="./`basename $0 .t`"
+
+make >/dev/null 2>&1
+
+tests="test-empty test-nonexist test-nonexistshell \
+ test-devnullscript test-badinterplen test-goodscript \
+ test-scriptarg test-scriptarg-nospace test-goodaout \
+ test-truncaout test-sparseaout"
+
+n=0
+
+echo "1..11"
+
+for atest in ${tests}
+do
+ n=`expr ${n} + 1`
+ if make ${atest}
+ then
+ echo "ok ${n} - ${atest}"
+ else
+ echo "not ok ${n} - ${atest}"
+ fi
+done
diff --git a/tools/regression/execve/tests/badinterplen b/tools/regression/execve/tests/badinterplen
new file mode 100644
index 0000000..96c049f
--- /dev/null
+++ b/tools/regression/execve/tests/badinterplen
@@ -0,0 +1,4 @@
+#! 456789012345678 0123456789012345 789012345678 012345678901234 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890
+# $FreeBSD$
+
+echo succeeded
diff --git a/tools/regression/execve/tests/devnullscript b/tools/regression/execve/tests/devnullscript
new file mode 100644
index 0000000..73b1020
--- /dev/null
+++ b/tools/regression/execve/tests/devnullscript
@@ -0,0 +1,4 @@
+#! /dev/null
+# $FreeBSD$
+
+echo succeeded
diff --git a/tools/regression/execve/tests/goodaout.c b/tools/regression/execve/tests/goodaout.c
new file mode 100644
index 0000000..ebf476b
--- /dev/null
+++ b/tools/regression/execve/tests/goodaout.c
@@ -0,0 +1,47 @@
+/* $NetBSD: goodaout.c,v 1.8 2003/07/26 19:38:49 salo Exp $ */
+
+/*-
+ * Copyright (c) 1993 Christopher G. Demetriou
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed for the
+ * NetBSD Project. See http://www.NetBSD.org/ for
+ * information about NetBSD.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ printf("succeeded\n");
+ exit(0);
+}
diff --git a/tools/regression/execve/tests/goodscript b/tools/regression/execve/tests/goodscript
new file mode 100644
index 0000000..51270dc
--- /dev/null
+++ b/tools/regression/execve/tests/goodscript
@@ -0,0 +1,4 @@
+#! /bin/csh
+# $FreeBSD$
+
+echo succeeded
diff --git a/tools/regression/execve/tests/nonexistshell b/tools/regression/execve/tests/nonexistshell
new file mode 100644
index 0000000..f9ee705
--- /dev/null
+++ b/tools/regression/execve/tests/nonexistshell
@@ -0,0 +1,4 @@
+#! /foo/bar/baz
+# $FreeBSD$
+
+echo foo
diff --git a/tools/regression/execve/tests/scriptarg b/tools/regression/execve/tests/scriptarg
new file mode 100644
index 0000000..2700f1c
--- /dev/null
+++ b/tools/regression/execve/tests/scriptarg
@@ -0,0 +1,4 @@
+#! /bin/sh -x
+# $FreeBSD$
+
+echo succeeded
diff --git a/tools/regression/execve/tests/scriptarg-nospace b/tools/regression/execve/tests/scriptarg-nospace
new file mode 100644
index 0000000..6731ad5
--- /dev/null
+++ b/tools/regression/execve/tests/scriptarg-nospace
@@ -0,0 +1,4 @@
+#!/bin/sh -x
+# $FreeBSD$
+
+echo succeeded
diff --git a/tools/regression/fifo/fifo_create/Makefile b/tools/regression/fifo/fifo_create/Makefile
new file mode 100644
index 0000000..f398b23
--- /dev/null
+++ b/tools/regression/fifo/fifo_create/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= fifo_create
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/fifo/fifo_create/fifo_create.c b/tools/regression/fifo/fifo_create/fifo_create.c
new file mode 100644
index 0000000..691360e
--- /dev/null
+++ b/tools/regression/fifo/fifo_create/fifo_create.c
@@ -0,0 +1,237 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Simple regression test for the creation and destruction of POSIX fifos in
+ * the file system name space. Using a specially created directory, create
+ * a fifo in it and check that the following properties are present, as
+ * specified in IEEE Std 1003.1, 2004 Edition:
+ *
+ * - When mkfifo() is called, on success, a fifo is created.
+ *
+ * - On an error, no fifo is created. (XXX: Not tested)
+ *
+ * - The mode bits on the fifo are a product of combining the umask and
+ * requested mode.
+ *
+ * - The fifo's owner will be the processes effective user ID. (XXX: Not
+ * tested)
+ *
+ * - The fifo's group will be the parent directory's group or the effective
+ * group ID of the process. For historical reasons, BSD prefers the group
+ * ID of the process, so we will generate an error if it's not that. (XXX:
+ * Not tested)
+ *
+ * - The st_atime, st_ctime, st_mtime of the fifo will be set appropriately,
+ * and st_ctime and st_mtime on the directory will be updated. (XXX: We
+ * test they are updated, not correct)
+ *
+ * - EEXIST is returned if the named file already exists.
+ *
+ * In addition, we check that we can unlink the fifo, and that if we do, it
+ * disappears.
+ *
+ * This test must run as root in order to usefully frob the process
+ * credential to test permission parts.
+ */
+
+/*
+ * All activity occurs within a temporary directory created early in the
+ * test.
+ */
+char temp_dir[PATH_MAX];
+
+static void __unused
+atexit_temp_dir(void)
+{
+
+ rmdir(temp_dir);
+}
+
+/*
+ * Basic creation tests: verify that mkfifo() creates a fifo, that the time
+ * stamps on the directory are updated, that if we try twice we get EEXIST,
+ * and that we can unlink it.
+ */
+static void
+fifo_create_test(void)
+{
+ struct stat old_dirsb, dirsb, fifosb;
+ char path[PATH_MAX];
+ int error;
+
+ /*
+ * Sleep to make sure that the time stamp on the directory will be
+ * updated.
+ */
+ sleep(2);
+
+ if (stat(temp_dir, &old_dirsb) < 0)
+ err(-1, "basic_create_test: stat: %s", temp_dir);
+
+ snprintf(path, PATH_MAX, "%s/testfifo", temp_dir);
+
+ if (mkfifo(path, 0600) < 0)
+ err(-1, "basic_create_test: mkfifo: %s", path);
+
+ if (stat(path, &fifosb) < 0) {
+ error = errno;
+ (void)unlink(path);
+ errno = error;
+ err(-1, "basic_create_test: stat: %s", path);
+ }
+
+ if (!(S_ISFIFO(fifosb.st_mode))) {
+ (void)unlink(path);
+ errx(-1, "basic_create_test: mkfifo produced non-fifo");
+ }
+
+ if (mkfifo(path, 0600) == 0)
+ errx(-1, "basic_create_test: dup mkfifo succeeded");
+
+ if (errno != EEXIST)
+ err(-1, "basic_create_test: dup mkfifo unexpected error");
+
+ if (stat(temp_dir, &dirsb) < 0) {
+ error = errno;
+ (void)unlink(path);
+ errno = error;
+ err(-1, "basic_create_test: stat: %s", temp_dir);
+ }
+
+ if (old_dirsb.st_ctime == dirsb.st_ctime) {
+ (void)unlink(path);
+ errx(-1, "basic_create_test: old_dirsb.st_ctime == "
+ "dirsb.st_ctime");
+ }
+
+ if (old_dirsb.st_mtime == dirsb.st_mtime) {
+ (void)unlink(path);
+ errx(-1, "basic_create_test: old_dirsb.st_mtime == "
+ "dirsb.st_mtime");
+ }
+
+ if (unlink(path) < 0)
+ err(-1, "basic_create_test: unlink: %s", path);
+
+ if (stat(path, &fifosb) == 0)
+ errx(-1, "basic_create_test: unlink failed to unlink");
+ if (errno != ENOENT)
+ err(-1, "basic_create_test: unlink unexpected error");
+}
+
+/*
+ * Having determined that basic create/remove/etc functionality is present
+ * for fifos, now make sure that the umask, requested permissions, and
+ * resulting mode are handled properly.
+ */
+static const struct permission_test {
+ mode_t pt_umask;
+ mode_t pt_reqmode;
+ mode_t pt_mode;
+} permission_test[] = {
+ {0000, 0, S_IFIFO},
+ {0000, S_IRWXU, S_IFIFO | S_IRWXU},
+ {0000, S_IRWXU | S_IRWXG | S_IRWXO, S_IFIFO | S_IRWXU | S_IRWXG |
+ S_IRWXO },
+ {0077, S_IRWXU, S_IFIFO | S_IRWXU},
+ {0077, S_IRWXU | S_IRWXG | S_IRWXO, S_IFIFO | S_IRWXU},
+};
+static const int permission_test_count = sizeof(permission_test) /
+ sizeof(struct permission_test);
+
+static void
+fifo_permission_test(void)
+{
+ const struct permission_test *ptp;
+ mode_t __unused old_umask;
+ char path[PATH_MAX];
+ struct stat sb;
+ int error, i;
+
+ snprintf(path, PATH_MAX, "%s/testfifo", temp_dir);
+ old_umask = umask(0022);
+ for (i = 0; i < permission_test_count; i++) {
+ ptp = &permission_test[i];
+
+ umask(ptp->pt_umask);
+ if (mkfifo(path, ptp->pt_reqmode) < 0)
+ err(-1, "fifo_permission_test: %08o %08o %08o\n",
+ ptp->pt_umask, ptp->pt_reqmode, ptp->pt_mode);
+
+ if (stat(path, &sb) < 0) {
+ error = errno;
+ (void)unlink(path);
+ errno = error;
+ err(-1, "fifo_permission_test: %s", path);
+ }
+
+ if (sb.st_mode != ptp->pt_mode) {
+ (void)unlink(path);
+ errx(-1, "fifo_permission_test: %08o %08o %08o "
+ "got %08o", ptp->pt_umask, ptp->pt_reqmode,
+ ptp->pt_mode, sb.st_mode);
+ }
+
+ if (unlink(path) < 0)
+ err(-1, "fifo_permission_test: unlink: %s", path);
+ }
+ umask(old_umask);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ if (geteuid() != 0)
+ errx(-1, "must be run as root");
+
+ strcpy(temp_dir, "/tmp/fifo_create.XXXXXXXXXXX");
+ if (mkdtemp(temp_dir) == NULL)
+ err(-1, "mkdtemp");
+ atexit(atexit_temp_dir);
+
+ if (chdir(temp_dir) < 0)
+ err(-1, "chdir");
+
+ fifo_create_test();
+
+ fifo_permission_test();
+
+ return (0);
+}
diff --git a/tools/regression/fifo/fifo_io/Makefile b/tools/regression/fifo/fifo_io/Makefile
new file mode 100644
index 0000000..c7d2ffb
--- /dev/null
+++ b/tools/regression/fifo/fifo_io/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= fifo_io
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/fifo/fifo_io/fifo_io.c b/tools/regression/fifo/fifo_io/fifo_io.c
new file mode 100644
index 0000000..96ef9b4
--- /dev/null
+++ b/tools/regression/fifo/fifo_io/fifo_io.c
@@ -0,0 +1,1409 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/ioctl.h>
+#include <sys/select.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <poll.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Regression test to exercise POSIX fifo I/O.
+ *
+ * We test a number of aspect of behavior, including:
+ *
+ * - If there's no data to read, then for blocking fifos, we block, and for
+ * non-blocking, we return EAGAIN.
+ *
+ * - If we write ten bytes, ten bytes can be read, and they're the same
+ * bytes, in the same order.
+ *
+ * - If we write two batches of five bytes, we can read the same ten bytes in
+ * one read of ten bytes.
+ *
+ * - If we write ten bytes, we can read the same ten bytes in two reads of
+ * five bytes each.
+ *
+ * - If we over-fill a buffer (by writing 512k, which we take to be a large
+ * number above default buffer sizes), we block if there is no reader.
+ *
+ * - That once 512k (ish) is read from the other end, the blocked writer
+ * wakes up.
+ *
+ * - When a fifo is empty, poll, select, kqueue, and fionread report it is
+ * writable but not readable.
+ *
+ * - When a fifo has data in it, poll, select, and kqueue report that it is
+ * writable.
+ *
+ * - XXX: blocked reader semantics?
+ *
+ * - XXX: event behavior on remote close?
+ *
+ * Although behavior of O_RDWR isn't defined for fifos by POSIX, we expect
+ * "reasonable" behavior, and run some additional tests relating to event
+ * management on O_RDWR fifo descriptors.
+ */
+
+#define KQUEUE_MAX_EVENT 8
+
+/*
+ * All activity occurs within a temporary directory created early in the
+ * test.
+ */
+char temp_dir[PATH_MAX];
+
+static void __unused
+atexit_temp_dir(void)
+{
+
+ rmdir(temp_dir);
+}
+
+static void
+makefifo(const char *fifoname, const char *testname)
+{
+
+ if (mkfifo(fifoname, 0700) < 0)
+ err(-1, "%s: makefifo: mkfifo: %s", testname, fifoname);
+}
+
+static void
+cleanfifo2(const char *fifoname, int fd1, int fd2)
+{
+
+ if (fd1 != -1)
+ close(fd1);
+ if (fd2 != -1)
+ close(fd2);
+ (void)unlink(fifoname);
+}
+
+static void
+cleanfifo3(const char *fifoname, int fd1, int fd2, int fd3)
+{
+
+ if (fd3 != -1)
+ close(fd3);
+ cleanfifo2(fifoname, fd1, fd2);
+}
+
+/*
+ * Open two different file descriptors for a fifo: one read, one write. Do
+ * so using non-blocking opens in order to avoid deadlocking the process.
+ */
+static int
+openfifo(const char *fifoname, const char *testname, int *reader_fdp,
+ int *writer_fdp)
+{
+ int error, fd1, fd2;
+
+ fd1 = open(fifoname, O_RDONLY | O_NONBLOCK);
+ if (fd1 < 0)
+ return (-1);
+ fd2 = open(fifoname, O_WRONLY | O_NONBLOCK);
+ if (fd2 < 0) {
+ error = errno;
+ close(fd1);
+ errno = error;
+ return (-1);
+ }
+ *reader_fdp = fd1;
+ *writer_fdp = fd2;
+
+ return (0);
+}
+
+/*
+ * Open one file descriptor for the fifo, supporting both read and write.
+ */
+static int
+openfifo_rw(const char *fifoname, const char *testname, int *fdp)
+{
+ int fd;
+
+ fd = open(fifoname, O_RDWR);
+ if (fd < 0)
+ return (-1);
+ *fdp = fd;
+
+ return (0);
+}
+
+static int
+set_nonblocking(int fd, const char *testname)
+{
+ int flags;
+
+ flags = fcntl(fd, F_GETFL);
+ if (flags < 0) {
+ warn("%s: fcntl(fd, F_GETFL)", testname);
+ return(-1);
+ }
+
+ flags |= O_NONBLOCK;
+
+ if (fcntl(fd, F_SETFL, flags) < 0) {
+ warn("%s: fcntl(fd, 0x%x)", testname, flags);
+ return (-1);
+ }
+
+ return (0);
+}
+
+static int
+set_blocking(int fd, const char *testname)
+{
+ int flags;
+
+ flags = fcntl(fd, F_GETFL);
+ if (flags < 0) {
+ warn("%s: fcntl(fd, F_GETFL)", testname);
+ return(-1);
+ }
+
+ flags &= ~O_NONBLOCK;
+
+ if (fcntl(fd, F_SETFL, flags) < 0) {
+ warn("%s: fcntl(fd, 0x%x)", testname, flags);
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * Drain a file descriptor (fifo) of any readable data. Note: resets the
+ * blocking state.
+ */
+static int
+drain_fd(int fd, const char *testname)
+{
+ ssize_t len;
+ u_char ch;
+
+ if (set_nonblocking(fd, testname) < 0)
+ return (-1);
+
+ while ((len = read(fd, &ch, sizeof(ch))) > 0);
+ if (len < 0) {
+ switch (errno) {
+ case EAGAIN:
+ return (0);
+ default:
+ warn("%s: drain_fd: read", testname);
+ return (-1);
+ }
+ }
+ warn("%s: drain_fd: read: returned 0 bytes", testname);
+ return (-1);
+}
+
+/*
+ * Simple I/O test: write ten integers, and make sure we get back the same
+ * integers in the same order. This assumes a minimum fifo buffer > 10
+ * bytes in order to not block and deadlock.
+ */
+static void
+test_simpleio(void)
+{
+ int i, reader_fd, writer_fd;
+ u_char buffer[10];
+ ssize_t len;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", "test_simpleio", &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_simpleio: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ for (i = 0; i < 10; i++)
+ buffer[i] = i;
+
+ len = write(writer_fd, (char *)buffer, sizeof(buffer));
+ if (len < 0) {
+ warn("test_simpleio: write");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != sizeof(buffer)) {
+ warnx("test_simplio: tried %zu but wrote %zd", sizeof(buffer),
+ len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ len = read(reader_fd, (char *)buffer, sizeof(buffer));
+ if (len < 0) {
+ warn("test_simpleio: read");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != sizeof(buffer)) {
+ warnx("test_simpleio: tried %zu but read %zd", sizeof(buffer),
+ len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ for (i = 0; i < 10; i++) {
+ if (buffer[i] == i)
+ continue;
+ warnx("test_simpleio: write byte %d as 0x%02x, but read "
+ "0x%02x", i, i, buffer[i]);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+}
+
+static int alarm_fired;
+/*
+ * Non-destructive SIGALRM handler.
+ */
+static void
+sigalarm(int signum)
+{
+
+ alarm_fired = 1;
+}
+
+/*
+ * Wrapper function for write, which uses a timer to interrupt any blocking.
+ * Because we can't reliably detect EINTR for blocking I/O, we also track
+ * whether or not our timeout fired.
+ */
+static int __unused
+timed_write(int fd, void *data, size_t len, ssize_t *written_lenp,
+ int timeout, int *timedoutp, const char *testname)
+{
+ struct sigaction act, oact;
+ ssize_t written_len;
+ int error;
+
+ alarm_fired = 0;
+ bzero(&act, sizeof(oact));
+ act.sa_handler = sigalarm;
+ if (sigaction(SIGALRM, &act, &oact) < 0) {
+ warn("%s: timed_write: sigaction", testname);
+ return (-1);
+ }
+ alarm(timeout);
+ written_len = write(fd, data, len);
+ error = errno;
+ alarm(0);
+ if (sigaction(SIGALRM, &oact, NULL) < 0) {
+ warn("%s: timed_write: sigaction", testname);
+ return (-1);
+ }
+ if (alarm_fired)
+ *timedoutp = 1;
+ else
+ *timedoutp = 0;
+
+ errno = error;
+ if (written_len < 0)
+ return (-1);
+ *written_lenp = written_len;
+ return (0);
+}
+
+/*
+ * Wrapper function for read, which uses a timer to interrupt any blocking.
+ * Because we can't reliably detect EINTR for blocking I/O, we also track
+ * whether or not our timeout fired.
+ */
+static int
+timed_read(int fd, void *data, size_t len, ssize_t *read_lenp,
+ int timeout, int *timedoutp, const char *testname)
+{
+ struct sigaction act, oact;
+ ssize_t read_len;
+ int error;
+
+ alarm_fired = 0;
+ bzero(&act, sizeof(oact));
+ act.sa_handler = sigalarm;
+ if (sigaction(SIGALRM, &act, &oact) < 0) {
+ warn("%s: timed_write: sigaction", testname);
+ return (-1);
+ }
+ alarm(timeout);
+ read_len = read(fd, data, len);
+ error = errno;
+ alarm(0);
+ if (sigaction(SIGALRM, &oact, NULL) < 0) {
+ warn("%s: timed_write: sigaction", testname);
+ return (-1);
+ }
+ if (alarm_fired)
+ *timedoutp = 1;
+ else
+ *timedoutp = 0;
+
+ errno = error;
+ if (read_len < 0)
+ return (-1);
+ *read_lenp = read_len;
+ return (0);
+}
+
+/*
+ * This test operates on blocking and non-blocking fifo file descriptors, in
+ * order to determine whether they block at good moments or not. By good we
+ * mean: don't block for non-blocking sockets, and do block for blocking
+ * ones, assuming there isn't I/O buffer to satisfy the request.
+ *
+ * We use a timeout of 5 seconds, concluding that in 5 seconds either all I/O
+ * that can take place will, and that if we reach the end of the timeout,
+ * then blocking has occured.
+ *
+ * We assume that the buffer size on a fifo is <512K, and as such, that
+ * writing that much data without an active reader will result in blocking.
+ */
+static void
+test_blocking_read_empty(void)
+{
+ int reader_fd, ret, timedout, writer_fd;
+ ssize_t len;
+ u_char ch;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_blocking_read_empty: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ /*
+ * Read one byte from an empty blocking fifo, block as there is no
+ * data.
+ */
+ if (set_blocking(reader_fd, __func__) < 0) {
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ ret = timed_read(reader_fd, &ch, sizeof(ch), &len, 5, &timedout,
+ __func__);
+ if (ret != -1) {
+ warnx("test_blocking_read_empty: timed_read: returned "
+ "success");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (errno != EINTR) {
+ warn("test_blocking_read_empty: timed_read");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ /*
+ * Read one byte from an empty non-blocking fifo, return EAGAIN as
+ * there is no data.
+ */
+ if (set_nonblocking(reader_fd, __func__) < 0) {
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ ret = timed_read(reader_fd, &ch, sizeof(ch), &len, 5, &timedout,
+ __func__);
+ if (ret != -1) {
+ warnx("test_blocking_read_empty: timed_read: returned "
+ "success");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (errno != EAGAIN) {
+ warn("test_blocking_read_empty: timed_read");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+}
+
+/*
+ * Write one byte to an empty fifo, then try to read one byte and make sure
+ * we don't block in either the write or the read. This tests both for
+ * improper blocking in the send and receive code.
+ */
+static void
+test_blocking_one_byte(void)
+{
+ int reader_fd, ret, timedout, writer_fd;
+ ssize_t len;
+ u_char ch;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_blocking: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ if (set_blocking(writer_fd, __func__) < 0) {
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (set_blocking(reader_fd, __func__) < 0) {
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ ch = 0xfe;
+ ret = timed_write(writer_fd, &ch, sizeof(ch), &len, 5, &timedout,
+ __func__);
+ if (ret < 0) {
+ warn("test_blocking_one_byte: timed_write");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != sizeof(ch)) {
+ warnx("test_blocking_one_byte: timed_write: tried to write "
+ "%zu, wrote %zd", sizeof(ch), len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ ch = 0xab;
+ ret = timed_read(reader_fd, &ch, sizeof(ch), &len, 5, &timedout,
+ __func__);
+ if (ret < 0) {
+ warn("test_blocking_one_byte: timed_read");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != sizeof(ch)) {
+ warnx("test_blocking_one_byte: timed_read: wanted %zu, "
+ "read %zd", sizeof(ch), len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (ch != 0xfe) {
+ warnx("test_blocking_one_byte: timed_read: expected to read "
+ "0x%02x, read 0x%02x", 0xfe, ch);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+}
+
+/*
+ * Write one byte to an empty fifo, then try to read one byte and make sure
+ * we don't get back EAGAIN.
+ */
+static void
+test_nonblocking_one_byte(void)
+{
+ int reader_fd, ret, timedout, writer_fd;
+ ssize_t len;
+ u_char ch;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_nonblocking: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ if (set_nonblocking(reader_fd, __func__) < 0) {
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ ch = 0xfe;
+ ret = timed_write(writer_fd, &ch, sizeof(ch), &len, 5, &timedout,
+ __func__);
+ if (ret < 0) {
+ warn("test_nonblocking_one_byte: timed_write");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != sizeof(ch)) {
+ warnx("test_nonblocking_one_byte: timed_write: tried to write "
+ "%zu, wrote %zd", sizeof(ch), len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ ch = 0xab;
+ ret = timed_read(reader_fd, &ch, sizeof(ch), &len, 5, &timedout,
+ __func__);
+ if (ret < 0) {
+ warn("test_nonblocking_one_byte: timed_read");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != sizeof(ch)) {
+ warnx("test_nonblocking_one_byte: timed_read: wanted %zu, read "
+ "%zd", sizeof(ch), len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (ch != 0xfe) {
+ warnx("test_nonblocking_one_byte: timed_read: expected to read "
+ "0x%02x, read 0x%02x", 0xfe, ch);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+}
+
+/*
+ * First of two test cases involving a 512K buffer: write the buffer into a
+ * blocking file descriptor. We'd like to know it blocks, but the closest we
+ * can get is to see if SIGALRM fired during the I/O resulting in a partial
+ * write.
+ */
+static void
+test_blocking_partial_write(void)
+{
+ int reader_fd, ret, timedout, writer_fd;
+ u_char *buffer;
+ ssize_t len;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_blocking_partial_write: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ if (set_blocking(writer_fd, __func__) < 0) {
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ buffer = malloc(512*1024);
+ if (buffer == NULL) {
+ warn("test_blocking_partial_write: malloc");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ bzero(buffer, 512*1024);
+
+ ret = timed_write(writer_fd, buffer, 512*1024, &len, 5, &timedout,
+ __func__);
+ if (ret < 0) {
+ warn("test_blocking_partial_write: timed_write");
+ free(buffer);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ if (!timedout) {
+ warnx("test_blocking_partial_write: timed_write: blocking "
+ "socket didn't time out");
+ free(buffer);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ free(buffer);
+
+ if (drain_fd(reader_fd, __func__) < 0) {
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+}
+
+/*
+ * Write a 512K buffer to an empty fifo using a non-blocking file descriptor,
+ * and make sure it doesn't block.
+ */
+static void
+test_nonblocking_partial_write(void)
+{
+ int reader_fd, ret, timedout, writer_fd;
+ u_char *buffer;
+ ssize_t len;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_blocking_partial_write: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ if (set_nonblocking(writer_fd, __func__) < 0) {
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ buffer = malloc(512*1024);
+ if (buffer == NULL) {
+ warn("test_blocking_partial_write: malloc");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ bzero(buffer, 512*1024);
+
+ ret = timed_write(writer_fd, buffer, 512*1024, &len, 5, &timedout,
+ __func__);
+ if (ret < 0) {
+ warn("test_blocking_partial_write: timed_write");
+ free(buffer);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ if (timedout) {
+ warnx("test_blocking_partial_write: timed_write: "
+ "non-blocking socket timed out");
+ free(buffer);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ if (len == 0 || len >= 512*1024) {
+ warnx("test_blocking_partial_write: timed_write: requested "
+ "%d, sent %zd", 512*1024, len);
+ free(buffer);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ free(buffer);
+
+ if (drain_fd(reader_fd, __func__) < 0) {
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+}
+
+/*
+ * test_coalesce_big_read() verifies that data mingles in the fifo across
+ * message boundaries by performing two small writes, then a bigger read
+ * that should return data from both writes.
+ */
+static void
+test_coalesce_big_read(void)
+{
+ int i, reader_fd, writer_fd;
+ u_char buffer[10];
+ ssize_t len;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_coalesce_big_read: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ /* Write five, write five, read ten. */
+ for (i = 0; i < 10; i++)
+ buffer[i] = i;
+
+ len = write(writer_fd, buffer, 5);
+ if (len < 0) {
+ warn("test_coalesce_big_read: write 5");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != 5) {
+ warnx("test_coalesce_big_read: write 5 wrote %zd", len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ len = write(writer_fd, buffer + 5, 5);
+ if (len < 0) {
+ warn("test_coalesce_big_read: write 5");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != 5) {
+ warnx("test_coalesce_big_read: write 5 wrote %zd", len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ len = read(reader_fd, buffer, 10);
+ if (len < 0) {
+ warn("test_coalesce_big_read: read 10");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != 10) {
+ warnx("test_coalesce_big_read: read 10 read %zd", len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ for (i = 0; i < 10; i++) {
+ if (buffer[i] == i)
+ continue;
+ warnx("test_coalesce_big_read: expected to read 0x%02x, "
+ "read 0x%02x", i, buffer[i]);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo2("testfifo", -1, -1);
+}
+
+/*
+ * test_coalesce_big_write() verifies that data mingles in the fifo across
+ * message boundaries by performing one big write, then two smaller reads
+ * that should return sequential elements of data from the write.
+ */
+static void
+test_coalesce_big_write(void)
+{
+ int i, reader_fd, writer_fd;
+ u_char buffer[10];
+ ssize_t len;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_coalesce_big_write: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ /* Write ten, read five, read five. */
+ for (i = 0; i < 10; i++)
+ buffer[i] = i;
+
+ len = write(writer_fd, buffer, 10);
+ if (len < 0) {
+ warn("test_coalesce_big_write: write 10");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != 10) {
+ warnx("test_coalesce_big_write: write 10 wrote %zd", len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ len = read(reader_fd, buffer, 5);
+ if (len < 0) {
+ warn("test_coalesce_big_write: read 5");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != 5) {
+ warnx("test_coalesce_big_write: read 5 read %zd", len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ len = read(reader_fd, buffer + 5, 5);
+ if (len < 0) {
+ warn("test_coalesce_big_write: read 5");
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (len != 5) {
+ warnx("test_coalesce_big_write: read 5 read %zd", len);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ for (i = 0; i < 10; i++) {
+ if (buffer[i] == i)
+ continue;
+ warnx("test_coalesce_big_write: expected to read 0x%02x, "
+ "read 0x%02x", i, buffer[i]);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo2("testfifo", -1, -1);
+}
+
+static int
+poll_status(int fd, int *readable, int *writable, int *exception,
+ const char *testname)
+{
+ struct pollfd fds[1];
+
+ fds[0].fd = fd;
+ fds[0].events = POLLIN | POLLOUT | POLLERR;
+ fds[0].revents = 0;
+
+ if (poll(fds, 1, 0) < 0) {
+ warn("%s: poll", testname);
+ return (-1);
+ }
+ *readable = (fds[0].revents & POLLIN) ? 1 : 0;
+ *writable = (fds[0].revents & POLLOUT) ? 1 : 0;
+ *exception = (fds[0].revents & POLLERR) ? 1 : 0;
+ return (0);
+}
+
+static int
+select_status(int fd, int *readable, int *writable, int *exception,
+ const char *testname)
+{
+ struct fd_set readfds, writefds, exceptfds;
+ struct timeval timeout;
+
+ FD_ZERO(&readfds);
+ FD_ZERO(&writefds);
+ FD_ZERO(&exceptfds);
+ FD_SET(fd, &readfds);
+ FD_SET(fd, &writefds);
+ FD_SET(fd, &exceptfds);
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 0;
+ if (select(fd+1, &readfds, &writefds, &exceptfds, &timeout) < 0) {
+ warn("%s: select", testname);
+ return (-1);
+ }
+ *readable = FD_ISSET(fd, &readfds) ? 1 : 0;
+ *writable = FD_ISSET(fd, &writefds) ? 1 : 0;
+ *exception = FD_ISSET(fd, &exceptfds) ? 1 : 0;
+ return (0);
+}
+
+/*
+ * Given an existing kqueue, set up read and write event filters for the
+ * passed file descriptor. Typically called once for the read endpoint, and
+ * once for the write endpoint.
+ */
+static int
+kqueue_setup(int kqueue_fd, int fd, const char *testname)
+{
+ struct kevent kevent_changelist[2];
+ struct kevent kevent_eventlist[KQUEUE_MAX_EVENT], *kp;
+ struct timespec timeout;
+ int i, ret;
+
+ timeout.tv_sec = 0;
+ timeout.tv_nsec = 0;
+
+ bzero(&kevent_changelist, sizeof(kevent_changelist));
+ EV_SET(&kevent_changelist[0], fd, EVFILT_READ, EV_ADD, 0, 0, 0);
+ EV_SET(&kevent_changelist[1], fd, EVFILT_WRITE, EV_ADD, 0, 0, 0);
+
+ bzero(&kevent_eventlist, sizeof(kevent_eventlist));
+ ret = kevent(kqueue_fd, kevent_changelist, 2, kevent_eventlist,
+ KQUEUE_MAX_EVENT, &timeout);
+ if (ret < 0) {
+ warn("%s:%s: kevent initial register", testname, __func__);
+ return (-1);
+ }
+
+ /*
+ * Verify that the events registered alright.
+ */
+ for (i = 0; i < ret; i++) {
+ kp = &kevent_eventlist[i];
+ if (kp->flags != EV_ERROR)
+ continue;
+ errno = kp->data;
+ warn("%s:%s: kevent register index %d", testname, __func__,
+ i);
+ return (-1);
+ }
+
+ return (0);
+}
+
+static int
+kqueue_status(int kqueue_fd, int fd, int *readable, int *writable,
+ int *exception, const char *testname)
+{
+ struct kevent kevent_eventlist[KQUEUE_MAX_EVENT], *kp;
+ struct timespec timeout;
+ int i, ret;
+
+ timeout.tv_sec = 0;
+ timeout.tv_nsec = 0;
+
+ ret = kevent(kqueue_fd, NULL, 0, kevent_eventlist, KQUEUE_MAX_EVENT,
+ &timeout);
+ if (ret < 0) {
+ warn("%s: %s: kevent", testname, __func__);
+ return (-1);
+ }
+
+ *readable = *writable = *exception = 0;
+ for (i = 0; i < ret; i++) {
+ kp = &kevent_eventlist[i];
+ if (kp->ident != (u_int)fd)
+ continue;
+ if (kp->filter == EVFILT_READ)
+ *readable = 1;
+ if (kp->filter == EVFILT_WRITE)
+ *writable = 1;
+ }
+
+ return (0);
+}
+
+static int
+fionread_status(int fd, int *readable, const char *testname)
+{
+ int i;
+
+ if (ioctl(fd, FIONREAD, &i) < 0) {
+ warn("%s: ioctl(FIONREAD)", testname);
+ return (-1);
+ }
+
+ if (i > 0)
+ *readable = 1;
+ else
+ *readable = 0;
+ return (0);
+}
+
+#define READABLE 1
+#define WRITABLE 1
+#define EXCEPTION 1
+
+#define NOT_READABLE 0
+#define NOT_WRITABLE 0
+#define NOT_EXCEPTION 0
+
+static int
+assert_status(int fd, int kqueue_fd, int assert_readable,
+ int assert_writable, int assert_exception, const char *testname,
+ const char *conditionname, const char *fdname)
+{
+ int readable, writable, exception;
+
+ if (poll_status(fd, &readable, &writable, &exception, testname) < 0)
+ return (-1);
+
+ if (readable != assert_readable || writable != assert_writable ||
+ exception != assert_exception) {
+ warnx("%s: %s polls r:%d, w:%d, e:%d on %s", testname,
+ fdname, readable, writable, exception, conditionname);
+ return (-1);
+ }
+
+ if (select_status(fd, &readable, &writable, &exception, testname) < 0)
+ return (-1);
+
+ if (readable != assert_readable || writable != assert_writable ||
+ exception != assert_exception) {
+ warnx("%s: %s selects r:%d, w:%d, e:%d on %s", testname,
+ fdname, readable, writable, exception, conditionname);
+ return (-1);
+ }
+
+ if (kqueue_status(kqueue_fd, fd, &readable, &writable, &exception,
+ testname) < 0)
+ return (-1);
+
+ if (readable != assert_readable || writable != assert_writable ||
+ exception != assert_exception) {
+ warnx("%s: %s kevent r:%d, w:%d, e:%d on %s", testname,
+ fdname, readable, writable, exception, conditionname);
+ return (-1);
+ }
+
+ if (fionread_status(fd, &readable, __func__) < 0)
+ return (-1);
+
+ if (readable != assert_readable) {
+ warnx("%s: %s fionread r:%d on %s", testname, fdname,
+ readable, conditionname);
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * test_events() uses poll(), select(), and kevent() to query the status of
+ * fifo file descriptors and determine whether they match expected state
+ * based on earlier semantic tests: specifically, whether or not poll/select/
+ * kevent will correctly inform on readable/writable state following I/O.
+ *
+ * It would be nice to also test status changes as a result of closing of one
+ * or another fifo endpoint.
+ */
+static void
+test_events_outofbox(void)
+{
+ int kqueue_fd, reader_fd, writer_fd;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd) < 0) {
+ warn("test_events_outofbox: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ kqueue_fd = kqueue();
+ if (kqueue_fd < 0) {
+ warn("%s: kqueue", __func__);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ if (kqueue_setup(kqueue_fd, reader_fd, __func__) < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ if (kqueue_setup(kqueue_fd, writer_fd, __func__) < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * Make sure that fresh, out-of-the-box fifo file descriptors have
+ * good initial states. The reader_fd should have no active state,
+ * since it will not be readable (no data in pipe), writable (it's
+ * a read-only descriptor), and there's no reason for error yet.
+ */
+ if (assert_status(reader_fd, kqueue_fd, NOT_READABLE, NOT_WRITABLE,
+ NOT_EXCEPTION, __func__, "create", "reader_fd") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * Make sure that fresh, out-of-the-box fifo file descriptors have
+ * good initial states. The writer_fd should be ready to write.
+ */
+ if (assert_status(writer_fd, kqueue_fd, NOT_READABLE, WRITABLE,
+ NOT_EXCEPTION, __func__, "create", "writer_fd") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+}
+
+static void
+test_events_write_read_byte(void)
+{
+ int kqueue_fd, reader_fd, writer_fd;
+ ssize_t len;
+ u_char ch;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_events_write_read_byte: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ kqueue_fd = kqueue();
+ if (kqueue_fd < 0) {
+ warn("%s: kqueue", __func__);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ if (kqueue_setup(kqueue_fd, reader_fd, __func__) < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ if (kqueue_setup(kqueue_fd, writer_fd, __func__) < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * Write a byte to the fifo, and make sure that the read end becomes
+ * readable, and that the write end remains writable (small write).
+ */
+ ch = 0x00;
+ len = write(writer_fd, &ch, sizeof(ch));
+ if (len < 0) {
+ warn("%s: write", __func__);
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ if (assert_status(reader_fd, kqueue_fd, READABLE, NOT_WRITABLE,
+ NOT_EXCEPTION, __func__, "write", "reader_fd") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * the writer_fd should remain writable.
+ */
+ if (assert_status(writer_fd, kqueue_fd, NOT_READABLE, WRITABLE,
+ NOT_EXCEPTION, __func__, "write", "writer_fd") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * Read the byte from the reader_fd, and now confirm that that fifo
+ * becomes unreadable.
+ */
+ len = read(reader_fd, &ch, sizeof(ch));
+ if (len < 0) {
+ warn("%s: read", __func__);
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ if (assert_status(reader_fd, kqueue_fd, NOT_READABLE, NOT_WRITABLE,
+ NOT_EXCEPTION, __func__, "write+read", "reader_fd") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * The writer_fd should remain writable.
+ */
+ if (assert_status(writer_fd, kqueue_fd, NOT_READABLE, WRITABLE,
+ NOT_EXCEPTION, __func__, "write+read", "writer_fd") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+}
+
+/*
+ * Write a 512k buffer to the fifo in non-blocking mode, and make sure that
+ * the write end becomes un-writable as a result of a partial write that
+ * fills the fifo buffer.
+ */
+static void
+test_events_partial_write(void)
+{
+ int kqueue_fd, reader_fd, writer_fd;
+ u_char *buffer;
+ ssize_t len;
+
+ makefifo("testfifo", __func__);
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd)
+ < 0) {
+ warn("test_events_partial_write: openfifo: testfifo");
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ kqueue_fd = kqueue();
+ if (kqueue_fd < 0) {
+ warn("%s: kqueue", __func__);
+ cleanfifo2("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ if (kqueue_setup(kqueue_fd, reader_fd, __func__) < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ if (kqueue_setup(kqueue_fd, writer_fd, __func__) < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ if (set_nonblocking(writer_fd, "test_events") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ buffer = malloc(512*1024);
+ if (buffer == NULL) {
+ warn("test_events_partial_write: malloc");
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+ bzero(buffer, 512*1024);
+
+ len = write(writer_fd, buffer, 512*1024);
+ if (len < 0) {
+ warn("test_events_partial_write: write");
+ free(buffer);
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ free(buffer);
+
+ if (assert_status(writer_fd, kqueue_fd, NOT_READABLE, NOT_WRITABLE,
+ NOT_EXCEPTION, __func__, "big write", "writer_fd") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ if (drain_fd(reader_fd, "test_events") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * Test that the writer_fd has been restored to writable state after
+ * draining.
+ */
+ if (assert_status(writer_fd, kqueue_fd, NOT_READABLE, WRITABLE,
+ NOT_EXCEPTION, __func__, "big write + drain", "writer_fd") < 0) {
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+ exit(-1);
+ }
+
+ cleanfifo3("testfifo", reader_fd, writer_fd, kqueue_fd);
+}
+
+/*
+ * We don't comprehensively test O_RDWR file descriptors, but do run a couple
+ * of event tests to make sure that the fifo implementation doesn't mixed up
+ * status checks. In particular, at least one past FreeBSD bug exists in
+ * which the FIONREAD test was performed on the wrong socket implementing the
+ * fifo, resulting in the fifo never returning readable.
+ */
+static void
+test_events_rdwr(void)
+{
+ int fd, kqueue_fd;
+ ssize_t len;
+ char ch;
+
+ makefifo("testfifo", __func__);
+ if (openfifo_rw("testfifo", __func__, &fd)
+ < 0) {
+ warn("%s: openfifo_rw: testfifo", __func__);
+ cleanfifo2("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ kqueue_fd = kqueue();
+ if (kqueue_fd < 0) {
+ warn("%s: kqueue", __func__);
+ cleanfifo2("testifo", fd, -1);
+ exit(-1);
+ }
+
+ if (kqueue_setup(kqueue_fd, fd, __func__) < 0) {
+ cleanfifo2("testfifo", fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * On first creation, the O_RDWR descriptor should be writable but
+ * not readable.
+ */
+ if (assert_status(fd, kqueue_fd, NOT_READABLE, WRITABLE,
+ NOT_EXCEPTION, __func__, "create", "fd") < 0) {
+ cleanfifo2("testfifo", fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * Write a byte, which should cause the file descriptor to become
+ * readable and writable.
+ */
+ ch = 0x00;
+ len = write(fd, &ch, sizeof(ch));
+ if (len < 0) {
+ warn("%s: write", __func__);
+ cleanfifo2("testfifo", fd, kqueue_fd);
+ exit(-1);
+ }
+
+ if (assert_status(fd, kqueue_fd, READABLE, WRITABLE, NOT_EXCEPTION,
+ __func__, "write", "fd") < 0) {
+ cleanfifo2("testfifo", fd, kqueue_fd);
+ exit(-1);
+ }
+
+ /*
+ * Read a byte, which should cause the file descriptor to return to
+ * simply being writable.
+ */
+ len = read(fd, &ch, sizeof(ch));
+ if (len < 0) {
+ warn("%s: read", __func__);
+ cleanfifo2("testfifo", fd, kqueue_fd);
+ exit(-1);
+ }
+
+ if (assert_status(fd, kqueue_fd, NOT_READABLE, WRITABLE,
+ NOT_EXCEPTION, __func__, "write+read", "fd") < 0) {
+ cleanfifo2("testfifo", fd, kqueue_fd);
+ exit(-1);
+ }
+
+ cleanfifo2("testfifo", fd, kqueue_fd);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ strcpy(temp_dir, "/tmp/fifo_io.XXXXXXXXXXX");
+ if (mkdtemp(temp_dir) == NULL)
+ err(-1, "mkdtemp");
+ atexit(atexit_temp_dir);
+
+ if (chdir(temp_dir) < 0)
+ err(-1, "chdir %s", temp_dir);
+
+ test_simpleio();
+ test_blocking_read_empty();
+ test_blocking_one_byte();
+ test_nonblocking_one_byte();
+ test_blocking_partial_write();
+ test_nonblocking_partial_write();
+ test_coalesce_big_read();
+ test_coalesce_big_write();
+ test_events_outofbox();
+ test_events_write_read_byte();
+ test_events_partial_write();
+ test_events_rdwr();
+
+ return (0);
+}
diff --git a/tools/regression/fifo/fifo_misc/Makefile b/tools/regression/fifo/fifo_misc/Makefile
new file mode 100644
index 0000000..976bce8
--- /dev/null
+++ b/tools/regression/fifo/fifo_misc/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= fifo_misc
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/fifo/fifo_misc/fifo_misc.c b/tools/regression/fifo/fifo_misc/fifo_misc.c
new file mode 100644
index 0000000..b379d18
--- /dev/null
+++ b/tools/regression/fifo/fifo_misc/fifo_misc.c
@@ -0,0 +1,352 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/filio.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Regression test for piddling details of fifos.
+ */
+
+/*
+ * All activity occurs within a temporary directory created early in the
+ * test.
+ */
+char temp_dir[PATH_MAX];
+
+static void __unused
+atexit_temp_dir(void)
+{
+
+ rmdir(temp_dir);
+}
+
+static void
+makefifo(const char *fifoname, const char *testname)
+{
+
+ if (mkfifo(fifoname, 0700) < 0)
+ err(-1, "%s: makefifo: mkfifo: %s", testname, fifoname);
+}
+
+static void
+cleanfifo(const char *fifoname, int fd1, int fd2)
+{
+
+ if (fd1 != -1)
+ close(fd1);
+ if (fd2 != -1)
+ close(fd2);
+ (void)unlink(fifoname);
+}
+
+static int
+openfifo(const char *fifoname, const char *testname, int *reader_fdp,
+ int *writer_fdp)
+{
+ int error, fd1, fd2;
+
+ fd1 = open(fifoname, O_RDONLY | O_NONBLOCK);
+ if (fd1 < 0)
+ return (-1);
+ fd2 = open(fifoname, O_WRONLY | O_NONBLOCK);
+ if (fd2 < 0) {
+ error = errno;
+ close(fd1);
+ errno = error;
+ return (-1);
+ }
+ *reader_fdp = fd1;
+ *writer_fdp = fd2;
+
+ return (0);
+}
+
+/*
+ * POSIX does not allow lseek(2) on fifos, so we expect ESPIPE as a result.
+ */
+static void
+test_lseek(void)
+{
+ int reader_fd, writer_fd;
+
+ makefifo("testfifo", __func__);
+
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd) < 0) {
+ warn("%s: openfifo", __func__);
+ cleanfifo("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ if (lseek(reader_fd, SEEK_CUR, 1) >= 0) {
+ warnx("%s: lseek succeeded instead of returning ESPIPE",
+ __func__);
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (errno != ESPIPE) {
+ warn("%s: lseek returned instead of ESPIPE", __func__);
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo("testfifo", reader_fd, writer_fd);
+}
+
+/*
+ * truncate(2) on FIFO should silently return success.
+ */
+static void
+test_truncate(void)
+{
+
+ makefifo("testfifo", __func__);
+
+ if (truncate("testfifo", 1024) != 0) {
+ warn("%s: truncate", __func__);
+ cleanfifo("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ cleanfifo("testfifo", -1, -1);
+}
+
+struct filter_entry {
+ int fe_filter;
+ const char *fe_name;
+ int fe_error;
+ const char *fe_errorname;
+};
+
+static const struct filter_entry good_filter_types[] = {
+ { EVFILT_READ, "EVFILT_READ", 0, "0" },
+ { EVFILT_WRITE, "EVFILT_WRITE", 0, "0" },
+#if WORKING_EVFILT_VNODE_ON_FIFOS
+ { EVFILT_VNODE, "EVFILT_VNODE", EINVAL, "EINVAL" },
+#endif
+};
+static const int good_filter_types_len = sizeof(good_filter_types) /
+ sizeof(good_filter_types[0]);
+
+static const struct filter_entry bad_filter_types[] = {
+ { EVFILT_NETDEV, "EVFILT_NETDEV", EINVAL, "EINVAL" },
+};
+static const int bad_filter_types_len = sizeof(bad_filter_types) /
+ sizeof(bad_filter_types[0]);
+
+/*
+ * kqueue event-related tests are in fifo_io.c; however, that tests only
+ * valid invocations of kqueue. Check to make sure that some invalid filters
+ * that are generally allowed on file descriptors are not allowed to be
+ * registered with kqueue, and that if attempts are made, we get the right
+ * error.
+ */
+static void
+test_kqueue(void)
+{
+ int kqueue_fd, reader_fd, writer_fd;
+ struct kevent kev_set;
+ struct timespec timeout;
+ int i, ret;
+
+ makefifo("testfifo", __func__);
+
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd) < 0) {
+ warn("%s: openfifo", __func__);
+ cleanfifo("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ kqueue_fd = kqueue();
+ if (kqueue_fd < 0) {
+ warn("%s: kqueue", __func__);
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ timeout.tv_sec = 0;
+ timeout.tv_nsec = 0;
+
+ for (i = 0; i < good_filter_types_len; i++) {
+ bzero(&kev_set, sizeof(kev_set));
+ EV_SET(&kev_set, reader_fd, good_filter_types[i].fe_filter,
+ EV_ADD, 0, 0, 0);
+ ret = kevent(kqueue_fd, &kev_set, 1, NULL, 0, &timeout);
+ if (ret < 0) {
+ warn("%s: kevent: adding good filter %s", __func__,
+ good_filter_types[i].fe_name);
+ close(kqueue_fd);
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ bzero(&kev_set, sizeof(kev_set));
+ EV_SET(&kev_set, reader_fd, good_filter_types[i].fe_filter,
+ EV_DELETE, 0, 0, 0);
+ ret = kevent(kqueue_fd, &kev_set, 1, NULL, 0, &timeout);
+ if (ret < 0) {
+ warn("%s: kevent: deleting good filter %s", __func__,
+ good_filter_types[i].fe_name);
+ close(kqueue_fd);
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ }
+
+ for (i = 0; i < bad_filter_types_len; i++) {
+ bzero(&kev_set, sizeof(kev_set));
+ EV_SET(&kev_set, reader_fd, bad_filter_types[i].fe_filter,
+ EV_ADD, 0, 0, 0);
+ ret = kevent(kqueue_fd, &kev_set, 1, NULL, 0, &timeout);
+ if (ret >= 0) {
+ warnx("%s: kevent: bad filter %s succeeded, expected "
+ "EINVAL", __func__, bad_filter_types[i].fe_name);
+ close(kqueue_fd);
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ if (errno != bad_filter_types[i].fe_error) {
+ warn("%s: kevent: bad filter %s failed with error "
+ "not %s", __func__,
+ bad_filter_types[i].fe_name,
+ bad_filter_types[i].fe_errorname);
+ close(kqueue_fd);
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+ }
+
+ close(kqueue_fd);
+ cleanfifo("testfifo", reader_fd, writer_fd);
+}
+
+static int
+test_ioctl_setclearflag(int fd, int flag, const char *testname,
+ const char *fdname, const char *flagname)
+{
+ int i;
+
+ i = 1;
+ if (ioctl(fd, flag, &i) < 0) {
+ warn("%s:%s: ioctl(%s, %s, 1)", testname, __func__, fdname,
+ flagname);
+ cleanfifo("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ i = 0;
+ if (ioctl(fd, flag, &i) < 0) {
+ warn("%s:%s: ioctl(%s, %s, 0)", testname, __func__, fdname,
+ flagname);
+ cleanfifo("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ return (0);
+}
+
+/*
+ * Test that various ioctls can be issued against the file descriptor. We
+ * don't currently test the semantics of these changes here.
+ */
+static void
+test_ioctl(void)
+{
+ int reader_fd, writer_fd;
+
+ makefifo("testfifo", __func__);
+
+ if (openfifo("testfifo", __func__, &reader_fd, &writer_fd) < 0) {
+ warn("%s: openfifo", __func__);
+ cleanfifo("testfifo", -1, -1);
+ exit(-1);
+ }
+
+ /*
+ * Set and remove the non-blocking I/O flag.
+ */
+ if (test_ioctl_setclearflag(reader_fd, FIONBIO, __func__,
+ "reader_fd", "FIONBIO") < 0) {
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ if (test_ioctl_setclearflag(writer_fd, FIONBIO, __func__,
+ "writer_fd", "FIONBIO") < 0) {
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ /*
+ * Set and remove the async I/O flag.
+ */
+ if (test_ioctl_setclearflag(reader_fd, FIOASYNC, __func__,
+ "reader_fd", "FIOASYNC") < 0) {
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ if (test_ioctl_setclearflag(writer_fd, FIOASYNC, __func__,
+ "writer_fd", "FIONASYNC") < 0) {
+ cleanfifo("testfifo", reader_fd, writer_fd);
+ exit(-1);
+ }
+
+ cleanfifo("testfifo", reader_fd, writer_fd);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ strcpy(temp_dir, "/tmp/fifo_misc.XXXXXXXXXXX");
+ if (mkdtemp(temp_dir) == NULL)
+ err(-1, "mkdtemp");
+ atexit(atexit_temp_dir);
+
+ if (chdir(temp_dir) < 0)
+ err(-1, "chdir %s", temp_dir);
+
+ test_lseek();
+ test_truncate();
+ test_kqueue();
+ test_ioctl();
+
+ return (0);
+}
diff --git a/tools/regression/fifo/fifo_open/Makefile b/tools/regression/fifo/fifo_open/Makefile
new file mode 100644
index 0000000..43bdbae
--- /dev/null
+++ b/tools/regression/fifo/fifo_open/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= fifo_open
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/fifo/fifo_open/fifo_open.c b/tools/regression/fifo/fifo_open/fifo_open.c
new file mode 100644
index 0000000..6899a3a
--- /dev/null
+++ b/tools/regression/fifo/fifo_open/fifo_open.c
@@ -0,0 +1,476 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Regression test to exercise various POSIX-defined parts of fifo behavior
+ * described for open(2):
+ *
+ * O_NONBLOCK
+ * When opening a FIFO with O_RDONLY or O_WRONLY set:
+ *
+ * - If O_NONBLOCK is set, an open() for reading-only shall return without
+ * delay. An open() for writing-only shall return an error if no process
+ * currently has the file open for reading.
+ *
+ * - If O_NONBLOCK is clear, an open() for reading-only shall block the
+ * calling thread until a thread opens the file for writing. An open()
+ * for writing-only shall block the calling thread until a thread opens
+ * the file for reading.
+ *
+ * When opening a block special or character special file that supports
+ * non-blocking opens:
+ *
+ * - If O_NONBLOCK is set, the open() function shall return without blocking
+ * for the device to be ready or available. Subsequent behavior of the
+ * device is device-specific.
+ *
+ * - If O_NONBLOCK is clear, the open() function shall block the calling
+ * thread until the device is ready or available before returning.
+ *
+ * Special errors:
+ *
+ * [ENXIO]
+ * O_NONBLOCK is set, the named file is a FIFO, O_WRONLY is set, and no
+ * process has the file open for reading.
+ */
+
+/*
+ * In order to test blocking/non-blocking behavior, test processes must
+ * potentially block themselves until released. As bugs in blocking result
+ * in processes that won't un-block, we must sacrifice a process to the task,
+ * watching and potentially killing it after a time-out. The main test
+ * process is never used to open or act directly on a fifo (other than to
+ * create or unlink it) in order to avoid the main test process being
+ * blocked.
+ */
+
+/*
+ * All activity occurs within a temporary directory created early in the
+ * test.
+ */
+char temp_dir[PATH_MAX];
+
+static void __unused
+atexit_temp_dir(void)
+{
+
+ rmdir(temp_dir);
+}
+
+/*
+ * Run a function in a particular test process.
+ */
+static int
+run_in_process(int (*func)(void), pid_t *pidp, const char *errstr)
+{
+ pid_t pid;
+
+ pid = fork();
+ if (pid < 0) {
+ warn("%s: run_in_process: fork", errstr);
+ return (-1);
+ }
+
+ if (pid == 0)
+ exit(func());
+
+ if (pidp != NULL)
+ *pidp = pid;
+
+ return (0);
+}
+
+/*
+ * Wait for a process on a timeout, and if the timeout expires, kill the
+ * process. Test each second rather than waiting the full timeout at once to
+ * minimize the amount of time spent hanging around unnecessarily.
+ */
+static int
+wait_and_timeout(pid_t pid, int timeout, int *status, const char *errstr)
+{
+ pid_t wpid;
+ int i;
+
+ /*
+ * Count up to the timeout, but do a non-hanging waitpid() after each
+ * second so we can avoid waiting a lot of extra time.
+ */
+ for (i = 0; i < timeout; i++) {
+ wpid = waitpid(pid, status, WNOHANG);
+ if (wpid < 0) {
+ warn("%s: wait_and_timeout: waitpid %d", errstr, pid);
+ return (-1);
+ }
+
+ if (wpid == pid)
+ return (0);
+
+ sleep(1);
+ }
+
+ wpid = waitpid(pid, status, WNOHANG);
+ if (wpid < 0) {
+ warn("%s: wait_and_timeout: waitpid %d", errstr, pid);
+ return (-1);
+ }
+
+ if (wpid == pid)
+ return (0);
+
+ if (kill(pid, SIGTERM) < 0) {
+ warn("%s: wait_and_timeout: kill %d", errstr, pid);
+ return (-1);
+ }
+
+ wpid = waitpid(pid, status, 0);
+ if (wpid < 0) {
+ warn("%s: wait_and_timeout: waitpid %d", errstr, pid);
+ return (-1);
+ }
+
+ if (wpid != pid) {
+ warn("%s: waitpid: returned %d not %d", errstr, wpid, pid);
+ return (-1);
+ }
+
+ warnx("%s: process blocked", errstr);
+ return (-1);
+}
+
+static int
+non_blocking_open_reader(void)
+{
+ int fd;
+
+ fd = open("testfifo", O_RDONLY | O_NONBLOCK);
+ if (fd < 0)
+ return (errno);
+ close(fd);
+
+ return (0);
+}
+
+static int
+non_blocking_open_writer(void)
+{
+ int fd;
+
+ fd = open("testfifo", O_WRONLY | O_NONBLOCK);
+ if (fd < 0)
+ return (errno);
+ close(fd);
+
+ return (0);
+}
+
+static int
+blocking_open_reader(void)
+{
+ int fd;
+
+ fd = open("testfifo", O_RDONLY);
+ if (fd < 0)
+ return (errno);
+ close(fd);
+
+ return (0);
+}
+
+static int
+blocking_open_writer(void)
+{
+ int fd;
+
+ fd = open("testfifo", O_WRONLY);
+ if (fd < 0)
+ return (errno);
+ close(fd);
+
+ return (0);
+}
+
+static void
+test_blocking_reader(void)
+{
+ pid_t reader_pid, writer_pid, wpid;
+ int error, status;
+
+ if (mkfifo("testfifo", 0600) < 0)
+ err(-1, "test_blocking_reader: mkfifo: testfifo");
+
+ /*
+ * Block a process in opening the fifo.
+ */
+ if (run_in_process(blocking_open_reader, &reader_pid,
+ "test_blocking_reader: blocking_open_reader") < 0) {
+ (void)unlink("testfifo");
+ exit(-1);
+ }
+
+ /*
+ * Test that it blocked.
+ */
+ sleep(5);
+ wpid = waitpid(reader_pid, &status, WNOHANG);
+ if (wpid < 0) {
+ error = errno;
+ (void)unlink("testfifo");
+ errno = error;
+ err(-1, "test_blocking_reader: waitpid %d", reader_pid);
+ }
+
+ if (wpid != 0 && wpid != reader_pid) {
+ (void)unlink("testfifo");
+ errx(-1, "test_blocking_reader: waitpid %d returned %d",
+ reader_pid, wpid);
+ }
+
+ if (wpid == reader_pid) {
+ (void)unlink("testfifo");
+ errx(-1, "test_blocking_reader: blocking child didn't "
+ "block");
+ }
+
+ /*
+ * Unblock the blocking reader.
+ */
+ if (run_in_process(blocking_open_writer, &writer_pid,
+ "test_blocking_reader: blocking_open_writer") < 0) {
+ (void)unlink("testfifo");
+ (void)kill(reader_pid, SIGTERM);
+ (void)waitpid(reader_pid, &status, 0);
+ exit(-1);
+ }
+
+ /*
+ * Make sure both processes exited quickly (<1 second) to make sure
+ * they didn't block, and GC.
+ */
+ if (wait_and_timeout(reader_pid, 1, &status,
+ "test_blocking_reader: blocking_open_reader") < 0) {
+ (void)unlink("testinfo");
+ (void)kill(reader_pid, SIGTERM);
+ (void)kill(writer_pid, SIGTERM);
+ exit(-1);
+ }
+
+ if (wait_and_timeout(writer_pid, 1, &status,
+ "test_blocking_reader: blocking_open_writer") < 0) {
+ (void)unlink("testinfo");
+ (void)kill(writer_pid, SIGTERM);
+ exit(-1);
+ }
+
+ if (unlink("testfifo") < 0)
+ err(-1, "test_blocking_reader: unlink: testfifo");
+}
+static void
+test_blocking_writer(void)
+{
+ pid_t reader_pid, writer_pid, wpid;
+ int error, status;
+
+ if (mkfifo("testfifo", 0600) < 0)
+ err(-1, "test_blocking_writer: mkfifo: testfifo");
+
+ /*
+ * Block a process in opening the fifo.
+ */
+ if (run_in_process(blocking_open_writer, &writer_pid,
+ "test_blocking_writer: blocking_open_writer") < 0) {
+ (void)unlink("testfifo");
+ exit(-1);
+ }
+
+ /*
+ * Test that it blocked.
+ */
+ sleep(5);
+ wpid = waitpid(writer_pid, &status, WNOHANG);
+ if (wpid < 0) {
+ error = errno;
+ (void)unlink("testfifo");
+ errno = error;
+ err(-1, "test_blocking_writer: waitpid %d", writer_pid);
+ }
+
+ if (wpid != 0 && wpid != writer_pid) {
+ (void)unlink("testfifo");
+ errx(-1, "test_blocking_writer: waitpid %d returned %d",
+ writer_pid, wpid);
+ }
+
+ if (wpid == writer_pid) {
+ (void)unlink("testfifo");
+ errx(-1, "test_blocking_writer: blocking child didn't "
+ "block");
+ }
+
+ /*
+ * Unblock the blocking writer.
+ */
+ if (run_in_process(blocking_open_reader, &reader_pid,
+ "test_blocking_writer: blocking_open_reader") < 0) {
+ (void)unlink("testfifo");
+ (void)kill(writer_pid, SIGTERM);
+ (void)waitpid(writer_pid, &status, 0);
+ exit(-1);
+ }
+
+ /*
+ * Make sure both processes exited quickly (<1 second) to make sure
+ * they didn't block, and GC.
+ */
+ if (wait_and_timeout(writer_pid, 1, &status,
+ "test_blocking_writer: blocking_open_writer") < 0) {
+ (void)unlink("testinfo");
+ (void)kill(writer_pid, SIGTERM);
+ (void)kill(reader_pid, SIGTERM);
+ (void)waitpid(writer_pid, &status, 0);
+ (void)waitpid(reader_pid, &status, 0);
+ exit(-1);
+ }
+
+ if (wait_and_timeout(reader_pid, 1, &status,
+ "test_blocking_writer: blocking_open_reader") < 0) {
+ (void)unlink("testinfo");
+ (void)kill(reader_pid, SIGTERM);
+ (void)waitpid(reader_pid, &status, 0);
+ exit(-1);
+ }
+
+ if (unlink("testfifo") < 0)
+ err(-1, "test_blocking_writer: unlink: testfifo");
+}
+
+static void
+test_non_blocking_reader(void)
+{
+ int status;
+ pid_t pid;
+
+ if (mkfifo("testfifo", 0600) < 0)
+ err(-1, "test_non_blocking_reader: mkfifo: testfifo");
+
+ if (run_in_process(non_blocking_open_reader, &pid,
+ "test_non_blocking_reader: non_blocking_open_reader") < 0) {
+ (void)unlink("testfifo");
+ exit(-1);
+ }
+
+ status = -1;
+ if (wait_and_timeout(pid, 5, &status,
+ "test_non_blocking_reader: non_blocking_open_reader") < 0) {
+ (void)unlink("testfifo");
+ exit(-1);
+ }
+
+ if (WEXITSTATUS(status) != 0) {
+ (void)unlink("testfifo");
+ errno = WEXITSTATUS(status);
+ err(-1, "test_non_blocking_reader: "
+ "non_blocking_open_reader: open: testfifo");
+ }
+
+ if (unlink("testfifo") < 0)
+ err(-1, "test_non_blocking_reader: unlink: testfifo");
+}
+
+static void
+test_non_blocking_writer(void)
+{
+ int status;
+ pid_t pid;
+
+ if (mkfifo("testfifo", 0600) < 0)
+ err(-1, "test_non_blocking_writer: mkfifo: testfifo");
+
+ if (run_in_process(non_blocking_open_writer, &pid,
+ "test_non_blocking_writer: non_blocking_open_writer") < 0) {
+ (void)unlink("testfifo");
+ exit(-1);
+ }
+
+ status = -1;
+ if (wait_and_timeout(pid, 5, &status,
+ "test_non_blocking_writer: non_blocking_open_writer") < 0) {
+ (void)unlink("testfifo");
+ exit(-1);
+ }
+
+ if (WEXITSTATUS(status) != ENXIO) {
+ (void)unlink("testfifo");
+
+ errno = WEXITSTATUS(status);
+ if (errno == 0)
+ errx(-1, "test_non_blocking_writer: "
+ "non_blocking_open_writer: open succeeded");
+ err(-1, "test_non_blocking_writer: "
+ "non_blocking_open_writer: open: testfifo");
+ }
+
+ if (unlink("testfifo") < 0)
+ err(-1, "test_non_blocking_writer: unlink: testfifo");
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ if (geteuid() != 0)
+ errx(-1, "must be run as root");
+
+ strcpy(temp_dir, "/tmp/fifo_open.XXXXXXXXXXX");
+ if (mkdtemp(temp_dir) == NULL)
+ err(-1, "mkdtemp");
+ if (chdir(temp_dir) < 0)
+ err(-1, "chdir: %s", temp_dir);
+ atexit(atexit_temp_dir);
+
+ test_non_blocking_reader();
+ test_non_blocking_writer();
+
+ test_blocking_reader();
+ test_blocking_writer();
+
+ return (0);
+}
diff --git a/tools/regression/file/dup/Makefile b/tools/regression/file/dup/Makefile
new file mode 100644
index 0000000..4de0815
--- /dev/null
+++ b/tools/regression/file/dup/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= dup
+NO_MAN=
+WARNS?= 6
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/file/dup/dup.c b/tools/regression/file/dup/dup.c
new file mode 100644
index 0000000..ad1f6df
--- /dev/null
+++ b/tools/regression/file/dup/dup.c
@@ -0,0 +1,160 @@
+/*
+ * $OpenBSD: dup2test.c,v 1.3 2003/07/31 21:48:08 deraadt Exp $
+ * $OpenBSD: dup2_self.c,v 1.3 2003/07/31 21:48:08 deraadt Exp $
+ * $OpenBSD: fcntl_dup.c,v 1.2 2003/07/31 21:48:08 deraadt Exp $
+ *
+ * Written by Artur Grabowski <art@openbsd.org> 2002 Public Domain.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test #1: check if dup(2) works.
+ * Test #2: check if dup2(2) works.
+ * Test #3: check if dup2(2) returned a fd we asked for.
+ * Test #4: check if dup2(2) cleared close-on-exec flag for duped fd.
+ * Test #5: check if dup2(2) allows to dup fd to itself.
+ * Test #6: check if dup2(2) returned a fd we asked for.
+ * Test #7: check if dup2(2) did not clear close-on-exec flag for duped fd.
+ * Test #8: check if fcntl(F_DUPFD) works.
+ * Test #9: check if fcntl(F_DUPFD) cleared close-on-exec flag for duped fd.
+ * Test #10: check if dup2() to a fd > current maximum number of open files
+ * limit work.
+ */
+
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int getafile(void);
+
+static int
+getafile(void)
+{
+ int fd;
+
+ char temp[] = "/tmp/dup2XXXXXXXXX";
+ if ((fd = mkstemp(temp)) < 0)
+ err(1, "mkstemp");
+ remove(temp);
+ if (ftruncate(fd, 1024) != 0)
+ err(1, "ftruncate");
+ return (fd);
+}
+
+int
+main(int __unused argc, char __unused *argv[])
+{
+ struct rlimit rlp;
+ int orgfd, fd1, fd2, test = 0;
+
+ orgfd = getafile();
+
+ printf("1..10\n");
+
+ /* If dup(2) ever work? */
+ if ((fd1 = dup(orgfd)) < 0)
+ err(1, "dup");
+ printf("ok %d - dup(2) works\n", ++test);
+
+ /* Set close-on-exec */
+ if (fcntl(fd1, F_SETFD, 1) != 0)
+ err(1, "fcntl(F_SETFD)");
+
+ /* If dup2(2) ever work? */
+ if ((fd2 = dup2(fd1, fd1 + 1)) < 0)
+ err(1, "dup2");
+ printf("ok %d - dup2(2) works\n", ++test);
+
+ /* Do we get the right fd? */
+ ++test;
+ if (fd2 != fd1 + 1)
+ printf("no ok %d - dup2(2) didn't give us the right fd\n",
+ test);
+ else
+ printf("ok %d - dup2(2) returned a correct fd\n", test);
+
+ /* Was close-on-exec cleared? */
+ ++test;
+ if (fcntl(fd2, F_GETFD) != 0)
+ printf("not ok %d - dup2(2) didn't clear close-on-exec\n",
+ test);
+ else
+ printf("ok %d - dup2(2) cleared close-on-exec\n", test);
+
+ /*
+ * Dup to itself.
+ *
+ * We're testing a small tweak in dup2 semantics.
+ * Normally dup and dup2 will clear the close-on-exec
+ * flag on the new fd (which appears to be an implementation
+ * mistake from start and not some planned behavior).
+ * In todays implementations of dup and dup2 we have to make
+ * an effort to really clear that flag. But all tested
+ * implementations of dup2 have another tweak. If we
+ * dup2(old, new) when old == new, the syscall short-circuits
+ * and returns early (because there is no need to do all the
+ * work (and there is a risk for serious mistakes)).
+ * So although the docs say that dup2 should "take 'old',
+ * close 'new' perform a dup(2) of 'old' into 'new'"
+ * the docs are not really followed because close-on-exec
+ * is not cleared on 'new'.
+ *
+ * Since everyone has this bug, we pretend that this is
+ * the way it is supposed to be and test here that it really
+ * works that way.
+ *
+ * This is a fine example on where two separate implementation
+ * fuckups take out each other and make the end-result the way
+ * it was meant to be.
+ */
+ if ((fd2 = dup2(fd1, fd1)) < 0)
+ err(1, "dup2");
+ printf("ok %d - dup2(2) to itself works\n", ++test);
+
+ /* Do we get the right fd? */
+ ++test;
+ if (fd2 != fd1)
+ printf("not ok %d - dup2(2) didn't give us the right fd\n",
+ test);
+ else
+ printf("ok %d - dup2(2) to itself returned a correct fd\n",
+ test);
+
+ /* Was close-on-exec cleared? */
+ ++test;
+ if (fcntl(fd2, F_GETFD) == 0)
+ printf("not ok %d - dup2(2) cleared close-on-exec\n", test);
+ else
+ printf("ok %d - dup2(2) didn't clear close-on-exec\n", test);
+
+ /* Does fcntl(F_DUPFD) work? */
+ if ((fd2 = fcntl(fd1, F_DUPFD)) < 0)
+ err(1, "fcntl(F_DUPFD)");
+ printf("ok %d - fcntl(F_DUPFD) works\n", ++test);
+
+ /* Was close-on-exec cleared? */
+ ++test;
+ if (fcntl(fd2, F_GETFD) != 0)
+ printf(
+ "not ok %d - fcntl(F_DUPFD) didn't clear close-on-exec\n",
+ test);
+ else
+ printf("ok %d - fcntl(F_DUPFD) cleared close-on-exec\n", test);
+
+ ++test;
+ if (getrlimit(RLIMIT_NOFILE, &rlp) < 0)
+ err(1, "getrlimit");
+ if ((fd2 = dup2(fd1, rlp.rlim_cur + 1)) == 0)
+ printf("not ok %d - dup2(2) bypassed NOFILE limit\n", test);
+ else
+ printf("ok %d - dup2(2) didn't bypass NOFILE limit\n", test);
+
+ return (0);
+}
diff --git a/tools/regression/file/dup/dup.t b/tools/regression/file/dup/dup.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/file/dup/dup.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/file/ftruncate/Makefile b/tools/regression/file/ftruncate/Makefile
new file mode 100644
index 0000000..c3285ef
--- /dev/null
+++ b/tools/regression/file/ftruncate/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= ftruncate
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/file/ftruncate/ftruncate.c b/tools/regression/file/ftruncate/ftruncate.c
new file mode 100644
index 0000000..aebcdcd
--- /dev/null
+++ b/tools/regression/file/ftruncate/ftruncate.c
@@ -0,0 +1,177 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Very simple regression test.
+ *
+ * Future tests that might be of interest:
+ *
+ * - Make sure we get EISDIR on a directory.
+ */
+
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <stdio.h>
+#include <unistd.h>
+
+/*
+ * Select various potentially interesting lengths at and around power of 2
+ * edges.
+ */
+static off_t lengths[] = {0, 1, 2, 3, 4, 127, 128, 129, 511, 512, 513, 1023,
+ 1024, 1025, 2047, 2048, 2049, 4095, 4096, 4097, 8191, 8192, 8193, 16383,
+ 16384, 16385};
+static int lengths_count = sizeof(lengths) / sizeof(off_t);
+
+int
+main(int argc, char *argv[])
+{
+ int error, fd, fds[2], i, read_only_fd;
+ char path[PATH_MAX];
+ struct stat sb;
+ size_t size;
+ off_t len;
+ char ch;
+
+ /*
+ * Tests using a writable temporary file: grow and then shrink a file
+ * using ftruncate and various lengths. Make sure that a negative
+ * file length is rejected. Make sure that when we grow the file,
+ * bytes now in the range of the file size return 0.
+ *
+ * Save a read-only reference to the file to use later for read-only
+ * descriptor tests.
+ */
+ snprintf(path, PATH_MAX, "/tmp/ftruncate.XXXXXXXXXXXXX");
+ fd = mkstemp(path);
+ if (fd < 0)
+ err(-1, "makestemp");
+ read_only_fd = open(path, O_RDONLY);
+ if (read_only_fd < 0) {
+ error = errno;
+ (void)unlink(path);
+ errno = error;
+ err(-1, "open(%s, O_RDONLY)", path);
+ }
+ (void)unlink(path);
+
+ if (ftruncate(fd, -1) == 0)
+ errx(-1, "ftruncate(fd, -1) succeeded");
+ if (errno != EINVAL)
+ err(-1, "ftruncate(fd, -1) returned wrong error");
+
+ for (i = 0; i < lengths_count; i++) {
+ len = lengths[i];
+ if (ftruncate(fd, len) < 0)
+ err(-1, "ftruncate(%llu) up", len);
+ if (fstat(fd, &sb) < 0)
+ err(-1, "stat");
+ if (sb.st_size != len)
+ errx(-1, "fstat(%llu) returned len %llu up", len,
+ sb.st_size);
+ if (len != 0) {
+ size = pread(fd, &ch, sizeof(ch), len - 1);
+ if (size < 0)
+ err(-1, "pread on len %llu up", len);
+ if (size != sizeof(ch))
+ errx(-1, "pread len %llu size %jd up",
+ len, (intmax_t)size);
+ if (ch != 0)
+ errx(-1,
+ "pread length %llu size %jd ch %d up",
+ len, (intmax_t)size, ch);
+ }
+ }
+
+ for (i = lengths_count - 1; i >= 0; i--) {
+ len = lengths[i];
+ if (ftruncate(fd, len) < 0)
+ err(-1, "ftruncate(%llu) down", len);
+ if (fstat(fd, &sb) < 0)
+ err(-1, "stat");
+ if (sb.st_size != len)
+ errx(-1, "fstat(%llu) returned %llu down", len,
+ sb.st_size);
+ }
+ close(fd);
+
+ /*
+ * Make sure that a read-only descriptor can't be truncated.
+ */
+ if (ftruncate(read_only_fd, 0) == 0)
+ errx(-1, "ftruncate(read_only_fd) succeeded");
+ if (errno != EINVAL)
+ err(-1, "ftruncate(read_only_fd) returned wrong error");
+ close(read_only_fd);
+
+ /*
+ * Make sure that ftruncate on sockets doesn't work.
+ */
+ fd = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (fd < 0)
+ err(-1, "socket(PF_UNIX, SOCK_STREAM, 0)");
+ if (ftruncate(fd, 0) == 0)
+ errx(-1, "ftruncate(socket) succeeded");
+ if (errno != EINVAL)
+ err(-1, "ftruncate(socket) returned wrong error");
+ close(fd);
+
+ /*
+ * Make sure that ftruncate on pipes doesn't work.
+ */
+ if (pipe(fds) < 0)
+ err(-1, "pipe");
+ if (ftruncate(fds[0], 0) == 0)
+ errx(-1, "ftruncate(pipe) succeeded");
+ if (errno != EINVAL)
+ err(-1, "ftruncate(pipe) returned wrong error");
+ close(fds[0]);
+ close(fds[1]);
+
+ /*
+ * Make sure that ftruncate on kqueues doesn't work.
+ */
+ fd = kqueue();
+ if (fd < 0)
+ err(-1, "kqueue");
+ if (ftruncate(fds[0], 0) == 0)
+ errx(-1, "ftruncate(kqueue) succeeded");
+ if (errno != EINVAL)
+ err(-1, "ftruncate(kqueue) returned wrong error");
+ close(fd);
+
+ return (0);
+}
diff --git a/tools/regression/fstest/LICENSE b/tools/regression/fstest/LICENSE
new file mode 100644
index 0000000..0638aad
--- /dev/null
+++ b/tools/regression/fstest/LICENSE
@@ -0,0 +1,27 @@
+$FreeBSD$
+
+License for all regression tests available with fstest:
+
+Copyright (c) 2006-2007 Pawel Jakub Dawidek <pjd@FreeBSD.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/tools/regression/fstest/Makefile b/tools/regression/fstest/Makefile
new file mode 100644
index 0000000..0781730
--- /dev/null
+++ b/tools/regression/fstest/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+CFLAGS+=-DHAS_LCHMOD
+CFLAGS+=-DHAS_CHFLAGS
+CFLAGS+=-DHAS_LCHFLAGS
+#CFLAGS+=-DHAS_TRUNCATE64
+#CFLAGS+=-DHAS_STAT64
+
+all: fstest
+
+fstest: fstest.c
+ gcc -Wall ${CFLAGS} fstest.c -o fstest
+
+clean:
+ rm -f fstest
diff --git a/tools/regression/fstest/README b/tools/regression/fstest/README
new file mode 100644
index 0000000..841ed40
--- /dev/null
+++ b/tools/regression/fstest/README
@@ -0,0 +1,22 @@
+$FreeBSD$
+
+Few notes on how to use fstest in short steps:
+
+ # cd fstest
+ # vi tests/conf
+ Change 'fs' to file system type you want to test (UFS or ZFS).
+ # vi Makefile
+ You need to manually tweak few things by editing CFLAGS lines
+ at the top of the file.
+ # make
+ It will compile fstest utility which is used by regression tests.
+ # cd /path/to/file/system/you/want/to/test/
+ # prove -r /path/to/fstest/
+
+That's all. Enjoy.
+
+Currently supported operating systems: FreeBSD, Solaris.
+Currently supported file system types: UFS, ZFS.
+
+--
+Pawel Jakub Dawidek <pjd@FreeBSD.org>
diff --git a/tools/regression/fstest/fstest.c b/tools/regression/fstest/fstest.c
new file mode 100644
index 0000000..98211d0
--- /dev/null
+++ b/tools/regression/fstest/fstest.c
@@ -0,0 +1,995 @@
+/*-
+ * Copyright (c) 2006-2007 Pawel Jakub Dawidek <pjd@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <assert.h>
+
+#ifndef HAS_TRUNCATE64
+#define truncate64 truncate
+#endif
+#ifndef HAS_STAT64
+#define stat64 stat
+#define lstat64 lstat
+#endif
+
+#ifndef ALLPERMS
+#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
+#endif
+
+enum action {
+ ACTION_OPEN,
+ ACTION_CREATE,
+ ACTION_UNLINK,
+ ACTION_MKDIR,
+ ACTION_RMDIR,
+ ACTION_LINK,
+ ACTION_SYMLINK,
+ ACTION_RENAME,
+ ACTION_MKFIFO,
+ ACTION_CHMOD,
+#ifdef HAS_LCHMOD
+ ACTION_LCHMOD,
+#endif
+ ACTION_CHOWN,
+ ACTION_LCHOWN,
+#ifdef HAS_CHFLAGS
+ ACTION_CHFLAGS,
+#endif
+#ifdef HAS_LCHFLAGS
+ ACTION_LCHFLAGS,
+#endif
+ ACTION_TRUNCATE,
+ ACTION_STAT,
+ ACTION_LSTAT,
+};
+
+#define TYPE_NONE 0x0000
+#define TYPE_STRING 0x0001
+#define TYPE_NUMBER 0x0002
+
+#define TYPE_OPTIONAL 0x0100
+
+#define MAX_ARGS 8
+
+struct syscall_desc {
+ char *sd_name;
+ enum action sd_action;
+ int sd_args[MAX_ARGS];
+};
+
+static struct syscall_desc syscalls[] = {
+ { "open", ACTION_OPEN, { TYPE_STRING, TYPE_STRING, TYPE_NUMBER | TYPE_OPTIONAL, TYPE_NONE } },
+ { "create", ACTION_CREATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+ { "unlink", ACTION_UNLINK, { TYPE_STRING, TYPE_NONE } },
+ { "mkdir", ACTION_MKDIR, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+ { "rmdir", ACTION_RMDIR, { TYPE_STRING, TYPE_NONE } },
+ { "link", ACTION_LINK, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+ { "symlink", ACTION_SYMLINK, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+ { "rename", ACTION_RENAME, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+ { "mkfifo", ACTION_MKFIFO, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+ { "chmod", ACTION_CHMOD, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+#ifdef HAS_LCHMOD
+ { "lchmod", ACTION_LCHMOD, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+#endif
+ { "chown", ACTION_CHOWN, { TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } },
+ { "lchown", ACTION_LCHOWN, { TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } },
+#ifdef HAS_CHFLAGS
+ { "chflags", ACTION_CHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#endif
+#ifdef HAS_LCHFLAGS
+ { "lchflags", ACTION_LCHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#endif
+ { "truncate", ACTION_TRUNCATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+ { "stat", ACTION_STAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+ { "lstat", ACTION_LSTAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+ { NULL, -1, { TYPE_NONE } }
+};
+
+struct flag {
+ long long f_flag;
+ char *f_str;
+};
+
+static struct flag open_flags[] = {
+#ifdef O_RDONLY
+ { O_RDONLY, "O_RDONLY" },
+#endif
+#ifdef O_WRONLY
+ { O_WRONLY, "O_WRONLY" },
+#endif
+#ifdef O_RDWR
+ { O_RDWR, "O_RDWR" },
+#endif
+#ifdef O_NONBLOCK
+ { O_NONBLOCK, "O_NONBLOCK" },
+#endif
+#ifdef O_APPEND
+ { O_APPEND, "O_APPEND" },
+#endif
+#ifdef O_CREAT
+ { O_CREAT, "O_CREAT" },
+#endif
+#ifdef O_TRUNC
+ { O_TRUNC, "O_TRUNC" },
+#endif
+#ifdef O_EXCL
+ { O_EXCL, "O_EXCL" },
+#endif
+#ifdef O_SHLOCK
+ { O_SHLOCK, "O_SHLOCK" },
+#endif
+#ifdef O_EXLOCK
+ { O_EXLOCK, "O_EXLOCK" },
+#endif
+#ifdef O_DIRECT
+ { O_DIRECT, "O_DIRECT" },
+#endif
+#ifdef O_FSYNC
+ { O_FSYNC, "O_FSYNC" },
+#endif
+#ifdef O_SYNC
+ { O_SYNC, "O_SYNC" },
+#endif
+#ifdef O_NOFOLLOW
+ { O_NOFOLLOW, "O_NOFOLLOW" },
+#endif
+#ifdef O_NOCTTY
+ { O_NOCTTY, "O_NOCTTY" },
+#endif
+ { 0, NULL }
+};
+
+#ifdef HAS_CHFLAGS
+static struct flag chflags_flags[] = {
+#ifdef UF_NODUMP
+ { UF_NODUMP, "UF_NODUMP" },
+#endif
+#ifdef UF_IMMUTABLE
+ { UF_IMMUTABLE, "UF_IMMUTABLE" },
+#endif
+#ifdef UF_APPEND
+ { UF_APPEND, "UF_APPEND" },
+#endif
+#ifdef UF_NOUNLINK
+ { UF_NOUNLINK, "UF_NOUNLINK" },
+#endif
+#ifdef UF_OPAQUE
+ { UF_OPAQUE, "UF_OPAQUE" },
+#endif
+#ifdef SF_ARCHIVED
+ { SF_ARCHIVED, "SF_ARCHIVED" },
+#endif
+#ifdef SF_IMMUTABLE
+ { SF_IMMUTABLE, "SF_IMMUTABLE" },
+#endif
+#ifdef SF_APPEND
+ { SF_APPEND, "SF_APPEND" },
+#endif
+#ifdef SF_NOUNLINK
+ { SF_NOUNLINK, "SF_NOUNLINK" },
+#endif
+#ifdef SF_SNAPSHOT
+ { SF_SNAPSHOT, "SF_SNAPSHOT" },
+#endif
+ { 0, NULL }
+};
+#endif
+
+static const char *err2str(int error);
+
+static void
+usage(void)
+{
+
+ fprintf(stderr, "usage: fstest [-u uid] [-g gid1[,gid2[...]]] syscall args ...\n");
+ exit(1);
+}
+
+static long long
+str2flags(struct flag *tflags, char *sflags)
+{
+ long long flags = 0;
+ unsigned int i;
+ char *f;
+
+ for (f = strtok(sflags, ","); f != NULL; f = strtok(NULL, ",")) {
+ /* Support magic 'none' flag which just reset all flags. */
+ if (strcmp(f, "none") == 0)
+ return (0);
+ for (i = 0; tflags[i].f_str != NULL; i++) {
+ if (strcmp(tflags[i].f_str, f) == 0)
+ break;
+ }
+ if (tflags[i].f_str == NULL) {
+ fprintf(stderr, "unknown flag '%s'\n", f);
+ exit(1);
+ }
+ flags |= tflags[i].f_flag;
+ }
+ return (flags);
+}
+
+#ifdef HAS_CHFLAGS
+static char *
+flags2str(struct flag *tflags, long long flags)
+{
+ static char sflags[1024];
+ unsigned int i;
+
+ sflags[0] = '\0';
+ for (i = 0; tflags[i].f_str != NULL; i++) {
+ if (flags & tflags[i].f_flag) {
+ if (sflags[0] != '\0')
+ strlcat(sflags, ",", sizeof(sflags));
+ strlcat(sflags, tflags[i].f_str, sizeof(sflags));
+ }
+ }
+ if (sflags[0] == '\0')
+ strlcpy(sflags, "none", sizeof(sflags));
+ return (sflags);
+}
+#endif
+
+static struct syscall_desc *
+find_syscall(const char *name)
+{
+ int i;
+
+ for (i = 0; syscalls[i].sd_name != NULL; i++) {
+ if (strcmp(syscalls[i].sd_name, name) == 0)
+ return (&syscalls[i]);
+ }
+ return (NULL);
+}
+
+static void
+show_stat(struct stat64 *sp, const char *what)
+{
+
+ if (strcmp(what, "mode") == 0)
+ printf("0%o", (unsigned int)(sp->st_mode & ALLPERMS));
+ else if (strcmp(what, "inode") == 0)
+ printf("%lld", (long long)sp->st_ino);
+ else if (strcmp(what, "nlink") == 0)
+ printf("%lld", (long long)sp->st_nlink);
+ else if (strcmp(what, "uid") == 0)
+ printf("%d", (int)sp->st_uid);
+ else if (strcmp(what, "gid") == 0)
+ printf("%d", (int)sp->st_gid);
+ else if (strcmp(what, "size") == 0)
+ printf("%lld", (long long)sp->st_size);
+ else if (strcmp(what, "blocks") == 0)
+ printf("%lld", (long long)sp->st_blocks);
+ else if (strcmp(what, "atime") == 0)
+ printf("%lld", (long long)sp->st_atime);
+ else if (strcmp(what, "mtime") == 0)
+ printf("%lld", (long long)sp->st_mtime);
+ else if (strcmp(what, "ctime") == 0)
+ printf("%lld", (long long)sp->st_ctime);
+#ifdef HAS_CHFLAGS
+ else if (strcmp(what, "flags") == 0)
+ printf("%s", flags2str(chflags_flags, sp->st_flags));
+#endif
+ else if (strcmp(what, "type") == 0) {
+ switch (sp->st_mode & S_IFMT) {
+ case S_IFIFO:
+ printf("fifo");
+ break;
+ case S_IFCHR:
+ printf("char");
+ break;
+ case S_IFDIR:
+ printf("dir");
+ break;
+ case S_IFBLK:
+ printf("block");
+ break;
+ case S_IFREG:
+ printf("regular");
+ break;
+ case S_IFLNK:
+ printf("symlink");
+ break;
+ case S_IFSOCK:
+ printf("socket");
+ break;
+ default:
+ printf("unknown");
+ break;
+ }
+ } else {
+ printf("unknown");
+ }
+}
+
+static void
+show_stats(struct stat64 *sp, char *what)
+{
+ const char *s = "";
+ char *w;
+
+ for (w = strtok(what, ","); w != NULL; w = strtok(NULL, ",")) {
+ printf("%s", s);
+ show_stat(sp, w);
+ s = ",";
+ }
+ printf("\n");
+}
+
+static unsigned int
+call_syscall(struct syscall_desc *scall, char *argv[])
+{
+ struct stat64 sb;
+ long long flags;
+ unsigned int i;
+ char *endp;
+ int rval;
+ union {
+ char *str;
+ long long num;
+ } args[MAX_ARGS];
+
+ /*
+ * Verify correctness of the arguments.
+ */
+ for (i = 0; i < sizeof(args)/sizeof(args[0]); i++) {
+ if (scall->sd_args[i] == TYPE_NONE) {
+ if (argv[i] == NULL || strcmp(argv[i], ":") == 0)
+ break;
+ fprintf(stderr, "too many arguments [%s]\n", argv[i]);
+ exit(1);
+ } else {
+ if (argv[i] == NULL || strcmp(argv[i], ":") == 0) {
+ if (scall->sd_args[i] & TYPE_OPTIONAL)
+ break;
+ fprintf(stderr, "too few arguments\n");
+ exit(1);
+ }
+ if (scall->sd_args[i] & TYPE_STRING) {
+ if (strcmp(argv[i], "NULL") == 0)
+ args[i].str = NULL;
+ else if (strcmp(argv[i], "DEADCODE") == 0)
+ args[i].str = (void *)0xdeadc0de;
+ else
+ args[i].str = argv[i];
+ } else if (scall->sd_args[i] & TYPE_NUMBER) {
+ args[i].num = strtoll(argv[i], &endp, 0);
+ if (*endp != '\0' && !isspace((unsigned char)*endp)) {
+ fprintf(stderr, "invalid argument %u, number expected [%s]\n", i, endp);
+ exit(1);
+ }
+ }
+ }
+ }
+ /*
+ * Call the given syscall.
+ */
+#define NUM(n) (args[(n)].num)
+#define STR(n) (args[(n)].str)
+ switch (scall->sd_action) {
+ case ACTION_OPEN:
+ flags = str2flags(open_flags, STR(1));
+ if (flags & O_CREAT) {
+ if (i == 2) {
+ fprintf(stderr, "too few arguments\n");
+ exit(1);
+ }
+ rval = open(STR(0), flags, (mode_t)NUM(2));
+ } else {
+ if (i == 3) {
+ fprintf(stderr, "too many arguments\n");
+ exit(1);
+ }
+ rval = open(STR(0), flags);
+ }
+ break;
+ case ACTION_CREATE:
+ rval = open(STR(0), O_CREAT | O_EXCL, NUM(1));
+ if (rval >= 0)
+ close(rval);
+ break;
+ case ACTION_UNLINK:
+ rval = unlink(STR(0));
+ break;
+ case ACTION_MKDIR:
+ rval = mkdir(STR(0), NUM(1));
+ break;
+ case ACTION_RMDIR:
+ rval = rmdir(STR(0));
+ break;
+ case ACTION_LINK:
+ rval = link(STR(0), STR(1));
+ break;
+ case ACTION_SYMLINK:
+ rval = symlink(STR(0), STR(1));
+ break;
+ case ACTION_RENAME:
+ rval = rename(STR(0), STR(1));
+ break;
+ case ACTION_MKFIFO:
+ rval = mkfifo(STR(0), NUM(1));
+ break;
+ case ACTION_CHMOD:
+ rval = chmod(STR(0), NUM(1));
+ break;
+#ifdef HAS_LCHMOD
+ case ACTION_LCHMOD:
+ rval = lchmod(STR(0), NUM(1));
+ break;
+#endif
+ case ACTION_CHOWN:
+ rval = chown(STR(0), NUM(1), NUM(2));
+ break;
+ case ACTION_LCHOWN:
+ rval = lchown(STR(0), NUM(1), NUM(2));
+ break;
+#ifdef HAS_CHFLAGS
+ case ACTION_CHFLAGS:
+ rval = chflags(STR(0), str2flags(chflags_flags, STR(1)));
+ break;
+#endif
+#ifdef HAS_LCHFLAGS
+ case ACTION_LCHFLAGS:
+ rval = lchflags(STR(0), str2flags(chflags_flags, STR(1)));
+ break;
+#endif
+ case ACTION_TRUNCATE:
+ rval = truncate64(STR(0), NUM(1));
+ break;
+ case ACTION_STAT:
+ rval = stat64(STR(0), &sb);
+ if (rval == 0) {
+ show_stats(&sb, STR(1));
+ return (i);
+ }
+ break;
+ case ACTION_LSTAT:
+ rval = lstat64(STR(0), &sb);
+ if (rval == 0) {
+ show_stats(&sb, STR(1));
+ return (i);
+ }
+ break;
+ default:
+ fprintf(stderr, "unsupported syscall\n");
+ exit(1);
+ }
+#undef STR
+#undef NUM
+ if (rval < 0) {
+ const char *serrno;
+
+ serrno = err2str(errno);
+ fprintf(stderr, "%s returned %d\n", scall->sd_name, rval);
+ printf("%s\n", serrno);
+ exit(1);
+ }
+ printf("0\n");
+ return (i);
+}
+
+static void
+set_gids(char *gids)
+{
+ gid_t *gidset;
+ long ngroups;
+ char *g, *endp;
+ unsigned i;
+
+ ngroups = sysconf(_SC_NGROUPS_MAX);
+ assert(ngroups > 0);
+ gidset = malloc(sizeof(*gidset) * ngroups);
+ assert(gidset != NULL);
+ for (i = 0, g = strtok(gids, ","); g != NULL; g = strtok(NULL, ","), i++) {
+ if (i >= ngroups) {
+ fprintf(stderr, "too many gids\n");
+ exit(1);
+ }
+ gidset[i] = strtol(g, &endp, 0);
+ if (*endp != '\0' && !isspace((unsigned char)*endp)) {
+ fprintf(stderr, "invalid gid '%s' - number expected\n",
+ g);
+ exit(1);
+ }
+ }
+ if (setgroups(i, gidset) < 0) {
+ fprintf(stderr, "cannot change groups: %s\n", strerror(errno));
+ exit(1);
+ }
+ free(gidset);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct syscall_desc *scall;
+ unsigned int n;
+ char *gids, *endp;
+ int uid, umsk, ch;
+
+ uid = -1;
+ gids = NULL;
+ umsk = 0;
+
+ while ((ch = getopt(argc, argv, "g:u:U:")) != -1) {
+ switch(ch) {
+ case 'g':
+ gids = optarg;
+ break;
+ case 'u':
+ uid = (int)strtol(optarg, &endp, 0);
+ if (*endp != '\0' && !isspace((unsigned char)*endp)) {
+ fprintf(stderr, "invalid uid '%s' - number "
+ "expected\n", optarg);
+ exit(1);
+ }
+ break;
+ case 'U':
+ umsk = (int)strtol(optarg, &endp, 0);
+ if (*endp != '\0' && !isspace((unsigned char)*endp)) {
+ fprintf(stderr, "invalid umask '%s' - number "
+ "expected\n", optarg);
+ exit(1);
+ }
+ break;
+ default:
+ usage();
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (argc < 1) {
+ fprintf(stderr, "too few arguments\n");
+ usage();
+ }
+
+ if (gids != NULL) {
+ fprintf(stderr, "changing groups to %s\n", gids);
+ set_gids(gids);
+ }
+ if (uid != -1) {
+ fprintf(stderr, "changing uid to %d\n", uid);
+ if (setuid(uid) < 0) {
+ fprintf(stderr, "cannot change uid: %s\n",
+ strerror(errno));
+ exit(1);
+ }
+ }
+
+ /* Change umask to requested value or to 0, if not requested. */
+ umask(umsk);
+
+ for (;;) {
+ scall = find_syscall(argv[0]);
+ if (scall == NULL) {
+ fprintf(stderr, "syscall '%s' not supported\n", argv[0]);
+ exit(1);
+ }
+ argc++;
+ argv++;
+ n = call_syscall(scall, argv);
+ argc += n;
+ argv += n;
+ if (argv[0] == NULL)
+ break;
+ argc++;
+ argv++;
+ }
+
+ exit(0);
+}
+
+static const char *
+err2str(int error)
+{
+ static char errnum[8];
+
+ switch (error) {
+#ifdef EPERM
+ case EPERM:
+ return ("EPERM");
+#endif
+#ifdef ENOENT
+ case ENOENT:
+ return ("ENOENT");
+#endif
+#ifdef ESRCH
+ case ESRCH:
+ return ("ESRCH");
+#endif
+#ifdef EINTR
+ case EINTR:
+ return ("EINTR");
+#endif
+#ifdef EIO
+ case EIO:
+ return ("EIO");
+#endif
+#ifdef ENXIO
+ case ENXIO:
+ return ("ENXIO");
+#endif
+#ifdef E2BIG
+ case E2BIG:
+ return ("E2BIG");
+#endif
+#ifdef ENOEXEC
+ case ENOEXEC:
+ return ("ENOEXEC");
+#endif
+#ifdef EBADF
+ case EBADF:
+ return ("EBADF");
+#endif
+#ifdef ECHILD
+ case ECHILD:
+ return ("ECHILD");
+#endif
+#ifdef EDEADLK
+ case EDEADLK:
+ return ("EDEADLK");
+#endif
+#ifdef ENOMEM
+ case ENOMEM:
+ return ("ENOMEM");
+#endif
+#ifdef EACCES
+ case EACCES:
+ return ("EACCES");
+#endif
+#ifdef EFAULT
+ case EFAULT:
+ return ("EFAULT");
+#endif
+#ifdef ENOTBLK
+ case ENOTBLK:
+ return ("ENOTBLK");
+#endif
+#ifdef EBUSY
+ case EBUSY:
+ return ("EBUSY");
+#endif
+#ifdef EEXIST
+ case EEXIST:
+ return ("EEXIST");
+#endif
+#ifdef EXDEV
+ case EXDEV:
+ return ("EXDEV");
+#endif
+#ifdef ENODEV
+ case ENODEV:
+ return ("ENODEV");
+#endif
+#ifdef ENOTDIR
+ case ENOTDIR:
+ return ("ENOTDIR");
+#endif
+#ifdef EISDIR
+ case EISDIR:
+ return ("EISDIR");
+#endif
+#ifdef EINVAL
+ case EINVAL:
+ return ("EINVAL");
+#endif
+#ifdef ENFILE
+ case ENFILE:
+ return ("ENFILE");
+#endif
+#ifdef EMFILE
+ case EMFILE:
+ return ("EMFILE");
+#endif
+#ifdef ENOTTY
+ case ENOTTY:
+ return ("ENOTTY");
+#endif
+#ifdef ETXTBSY
+ case ETXTBSY:
+ return ("ETXTBSY");
+#endif
+#ifdef EFBIG
+ case EFBIG:
+ return ("EFBIG");
+#endif
+#ifdef ENOSPC
+ case ENOSPC:
+ return ("ENOSPC");
+#endif
+#ifdef ESPIPE
+ case ESPIPE:
+ return ("ESPIPE");
+#endif
+#ifdef EROFS
+ case EROFS:
+ return ("EROFS");
+#endif
+#ifdef EMLINK
+ case EMLINK:
+ return ("EMLINK");
+#endif
+#ifdef EPIPE
+ case EPIPE:
+ return ("EPIPE");
+#endif
+#ifdef EDOM
+ case EDOM:
+ return ("EDOM");
+#endif
+#ifdef ERANGE
+ case ERANGE:
+ return ("ERANGE");
+#endif
+#ifdef EAGAIN
+ case EAGAIN:
+ return ("EAGAIN");
+#endif
+#ifdef EINPROGRESS
+ case EINPROGRESS:
+ return ("EINPROGRESS");
+#endif
+#ifdef EALREADY
+ case EALREADY:
+ return ("EALREADY");
+#endif
+#ifdef ENOTSOCK
+ case ENOTSOCK:
+ return ("ENOTSOCK");
+#endif
+#ifdef EDESTADDRREQ
+ case EDESTADDRREQ:
+ return ("EDESTADDRREQ");
+#endif
+#ifdef EMSGSIZE
+ case EMSGSIZE:
+ return ("EMSGSIZE");
+#endif
+#ifdef EPROTOTYPE
+ case EPROTOTYPE:
+ return ("EPROTOTYPE");
+#endif
+#ifdef ENOPROTOOPT
+ case ENOPROTOOPT:
+ return ("ENOPROTOOPT");
+#endif
+#ifdef EPROTONOSUPPORT
+ case EPROTONOSUPPORT:
+ return ("EPROTONOSUPPORT");
+#endif
+#ifdef ESOCKTNOSUPPORT
+ case ESOCKTNOSUPPORT:
+ return ("ESOCKTNOSUPPORT");
+#endif
+#ifdef EOPNOTSUPP
+ case EOPNOTSUPP:
+ return ("EOPNOTSUPP");
+#endif
+#ifdef EPFNOSUPPORT
+ case EPFNOSUPPORT:
+ return ("EPFNOSUPPORT");
+#endif
+#ifdef EAFNOSUPPORT
+ case EAFNOSUPPORT:
+ return ("EAFNOSUPPORT");
+#endif
+#ifdef EADDRINUSE
+ case EADDRINUSE:
+ return ("EADDRINUSE");
+#endif
+#ifdef EADDRNOTAVAIL
+ case EADDRNOTAVAIL:
+ return ("EADDRNOTAVAIL");
+#endif
+#ifdef ENETDOWN
+ case ENETDOWN:
+ return ("ENETDOWN");
+#endif
+#ifdef ENETUNREACH
+ case ENETUNREACH:
+ return ("ENETUNREACH");
+#endif
+#ifdef ENETRESET
+ case ENETRESET:
+ return ("ENETRESET");
+#endif
+#ifdef ECONNABORTED
+ case ECONNABORTED:
+ return ("ECONNABORTED");
+#endif
+#ifdef ECONNRESET
+ case ECONNRESET:
+ return ("ECONNRESET");
+#endif
+#ifdef ENOBUFS
+ case ENOBUFS:
+ return ("ENOBUFS");
+#endif
+#ifdef EISCONN
+ case EISCONN:
+ return ("EISCONN");
+#endif
+#ifdef ENOTCONN
+ case ENOTCONN:
+ return ("ENOTCONN");
+#endif
+#ifdef ESHUTDOWN
+ case ESHUTDOWN:
+ return ("ESHUTDOWN");
+#endif
+#ifdef ETOOMANYREFS
+ case ETOOMANYREFS:
+ return ("ETOOMANYREFS");
+#endif
+#ifdef ETIMEDOUT
+ case ETIMEDOUT:
+ return ("ETIMEDOUT");
+#endif
+#ifdef ECONNREFUSED
+ case ECONNREFUSED:
+ return ("ECONNREFUSED");
+#endif
+#ifdef ELOOP
+ case ELOOP:
+ return ("ELOOP");
+#endif
+#ifdef ENAMETOOLONG
+ case ENAMETOOLONG:
+ return ("ENAMETOOLONG");
+#endif
+#ifdef EHOSTDOWN
+ case EHOSTDOWN:
+ return ("EHOSTDOWN");
+#endif
+#ifdef EHOSTUNREACH
+ case EHOSTUNREACH:
+ return ("EHOSTUNREACH");
+#endif
+#ifdef ENOTEMPTY
+ case ENOTEMPTY:
+ return ("ENOTEMPTY");
+#endif
+#ifdef EPROCLIM
+ case EPROCLIM:
+ return ("EPROCLIM");
+#endif
+#ifdef EUSERS
+ case EUSERS:
+ return ("EUSERS");
+#endif
+#ifdef EDQUOT
+ case EDQUOT:
+ return ("EDQUOT");
+#endif
+#ifdef ESTALE
+ case ESTALE:
+ return ("ESTALE");
+#endif
+#ifdef EREMOTE
+ case EREMOTE:
+ return ("EREMOTE");
+#endif
+#ifdef EBADRPC
+ case EBADRPC:
+ return ("EBADRPC");
+#endif
+#ifdef ERPCMISMATCH
+ case ERPCMISMATCH:
+ return ("ERPCMISMATCH");
+#endif
+#ifdef EPROGUNAVAIL
+ case EPROGUNAVAIL:
+ return ("EPROGUNAVAIL");
+#endif
+#ifdef EPROGMISMATCH
+ case EPROGMISMATCH:
+ return ("EPROGMISMATCH");
+#endif
+#ifdef EPROCUNAVAIL
+ case EPROCUNAVAIL:
+ return ("EPROCUNAVAIL");
+#endif
+#ifdef ENOLCK
+ case ENOLCK:
+ return ("ENOLCK");
+#endif
+#ifdef ENOSYS
+ case ENOSYS:
+ return ("ENOSYS");
+#endif
+#ifdef EFTYPE
+ case EFTYPE:
+ return ("EFTYPE");
+#endif
+#ifdef EAUTH
+ case EAUTH:
+ return ("EAUTH");
+#endif
+#ifdef ENEEDAUTH
+ case ENEEDAUTH:
+ return ("ENEEDAUTH");
+#endif
+#ifdef EIDRM
+ case EIDRM:
+ return ("EIDRM");
+#endif
+#ifdef ENOMSG
+ case ENOMSG:
+ return ("ENOMSG");
+#endif
+#ifdef EOVERFLOW
+ case EOVERFLOW:
+ return ("EOVERFLOW");
+#endif
+#ifdef ECANCELED
+ case ECANCELED:
+ return ("ECANCELED");
+#endif
+#ifdef EILSEQ
+ case EILSEQ:
+ return ("EILSEQ");
+#endif
+#ifdef ENOATTR
+ case ENOATTR:
+ return ("ENOATTR");
+#endif
+#ifdef EDOOFUS
+ case EDOOFUS:
+ return ("EDOOFUS");
+#endif
+#ifdef EBADMSG
+ case EBADMSG:
+ return ("EBADMSG");
+#endif
+#ifdef EMULTIHOP
+ case EMULTIHOP:
+ return ("EMULTIHOP");
+#endif
+#ifdef ENOLINK
+ case ENOLINK:
+ return ("ENOLINK");
+#endif
+#ifdef EPROTO
+ case EPROTO:
+ return ("EPROTO");
+#endif
+ default:
+ snprintf(errnum, sizeof(errnum), "%d", error);
+ return (errnum);
+ }
+}
diff --git a/tools/regression/fstest/tests/chflags/00.t b/tools/regression/fstest/tests/chflags/00.t
new file mode 100644
index 0000000..af144b0
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/00.t
@@ -0,0 +1,178 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags changes flags"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..191"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n2} 0755
+cdir=`pwd`
+cd ${n2}
+
+expect 0 create ${n0} 0644
+expect none stat ${n0} flags
+expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
+expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags
+expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
+expect 0 chflags ${n0} none
+expect none stat ${n0} flags
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0644
+expect none stat ${n0} flags
+expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
+expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags
+expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
+expect 0 chflags ${n0} none
+expect none stat ${n0} flags
+expect 0 rmdir ${n0}
+
+expect 0 mkfifo ${n0} 0644
+expect none stat ${n0} flags
+expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
+expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags
+expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags
+expect 0 chflags ${n0} none
+expect none stat ${n0} flags
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 symlink ${n0} ${n1}
+expect none stat ${n1} flags
+expect none lstat ${n1} flags
+expect 0 chflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n1} flags
+expect none lstat ${n1} flags
+expect 0 chflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n1} flags
+expect none lstat ${n1} flags
+expect 0 chflags ${n1} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n1} flags
+expect none lstat ${n1} flags
+expect 0 chflags ${n1} none
+expect none stat ${n1} flags
+expect none lstat ${n1} flags
+expect 0 unlink ${n1}
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 symlink ${n0} ${n1}
+expect none stat ${n1} flags
+expect none lstat ${n1} flags
+expect 0 lchflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK lstat ${n1} flags
+expect none stat ${n1} flags
+expect 0 lchflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE
+expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE lstat ${n1} flags
+expect none stat ${n1} flags
+expect 0 lchflags ${n1} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK
+expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK lstat ${n1} flags
+expect none stat ${n1} flags
+expect 0 lchflags ${n1} none
+expect none lstat ${n1} flags
+expect none stat ${n1} flags
+expect 0 unlink ${n1}
+expect 0 unlink ${n0}
+
+# successful chflags(2) updates ctime.
+expect 0 create ${n0} 0644
+for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do
+ ctime1=`${fstest} stat ${n0} ctime`
+ sleep 1
+ expect 0 chflags ${n0} ${flag}
+ ctime2=`${fstest} stat ${n0} ctime`
+ test_check $ctime1 -lt $ctime2
+done
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do
+ ctime1=`${fstest} stat ${n0} ctime`
+ sleep 1
+ expect 0 chflags ${n0} ${flag}
+ ctime2=`${fstest} stat ${n0} ctime`
+ test_check $ctime1 -lt $ctime2
+done
+expect 0 rmdir ${n0}
+
+expect 0 mkfifo ${n0} 0644
+for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do
+ ctime1=`${fstest} stat ${n0} ctime`
+ sleep 1
+ expect 0 chflags ${n0} ${flag}
+ ctime2=`${fstest} stat ${n0} ctime`
+ test_check $ctime1 -lt $ctime2
+done
+expect 0 unlink ${n0}
+
+expect 0 symlink ${n1} ${n0}
+for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do
+ ctime1=`${fstest} lstat ${n0} ctime`
+ sleep 1
+ expect 0 lchflags ${n0} ${flag}
+ ctime2=`${fstest} lstat ${n0} ctime`
+ test_check $ctime1 -lt $ctime2
+done
+expect 0 unlink ${n0}
+
+# unsuccessful chflags(2) does not update ctime.
+expect 0 create ${n0} 0644
+for flag in UF_IMMUTABLE SF_IMMUTABLE none; do
+ ctime1=`${fstest} stat ${n0} ctime`
+ sleep 1
+ expect EPERM -u 65534 chflags ${n0} ${flag}
+ ctime2=`${fstest} stat ${n0} ctime`
+ test_check $ctime1 -eq $ctime2
+done
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+for flag in UF_IMMUTABLE SF_IMMUTABLE none; do
+ ctime1=`${fstest} stat ${n0} ctime`
+ sleep 1
+ expect EPERM -u 65534 chflags ${n0} ${flag}
+ ctime2=`${fstest} stat ${n0} ctime`
+ test_check $ctime1 -eq $ctime2
+done
+expect 0 rmdir ${n0}
+
+expect 0 mkfifo ${n0} 0644
+for flag in UF_IMMUTABLE SF_IMMUTABLE none; do
+ ctime1=`${fstest} stat ${n0} ctime`
+ sleep 1
+ expect EPERM -u 65534 chflags ${n0} ${flag}
+ ctime2=`${fstest} stat ${n0} ctime`
+ test_check $ctime1 -eq $ctime2
+done
+expect 0 unlink ${n0}
+
+expect 0 symlink ${n1} ${n0}
+for flag in UF_IMMUTABLE SF_IMMUTABLE none; do
+ ctime1=`${fstest} lstat ${n0} ctime`
+ sleep 1
+ expect EPERM -u 65534 lchflags ${n0} ${flag}
+ ctime2=`${fstest} lstat ${n0} ctime`
+ test_check $ctime1 -eq $ctime2
+done
+expect 0 unlink ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n2}
diff --git a/tools/regression/fstest/tests/chflags/01.t b/tools/regression/fstest/tests/chflags/01.t
new file mode 100644
index 0000000..efdee5c
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/01.t
@@ -0,0 +1,20 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns ENOTDIR if a component of the path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR chflags ${n0}/${n1}/test UF_IMMUTABLE
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chflags/02.t b/tools/regression/fstest/tests/chflags/02.t
new file mode 100644
index 0000000..7579061
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/02.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns ENAMETOOLONG if a component of a pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..6"
+
+expect 0 create ${name255} 0644
+expect 0 chflags ${name255} UF_IMMUTABLE
+expect UF_IMMUTABLE stat ${name255} flags
+expect 0 chflags ${name255} none
+expect 0 unlink ${name255}
+expect ENAMETOOLONG chflags ${name256} UF_IMMUTABLE
diff --git a/tools/regression/fstest/tests/chflags/03.t b/tools/regression/fstest/tests/chflags/03.t
new file mode 100644
index 0000000..06a0c04
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/03.t
@@ -0,0 +1,25 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns ENAMETOOLONG if an entire path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..13"
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 create ${path1023} 0644
+expect 0 chflags ${path1023} UF_IMMUTABLE
+expect 0 chflags ${path1023} none
+expect 0 unlink ${path1023}
+expect ENAMETOOLONG chflags ${path1024} UF_IMMUTABLE
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/chflags/04.t b/tools/regression/fstest/tests/chflags/04.t
new file mode 100644
index 0000000..105732c
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/04.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns ENOENT if the named file does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..4"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT chflags ${n0}/${n1}/test UF_IMMUTABLE
+expect ENOENT chflags ${n0}/${n1} UF_IMMUTABLE
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chflags/05.t b/tools/regression/fstest/tests/chflags/05.t
new file mode 100644
index 0000000..a534ff5
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/05.t
@@ -0,0 +1,35 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns EACCES when search permission is denied for a component of the path prefix"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..16"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} UF_IMMUTABLE
+expect UF_IMMUTABLE -u 65534 -g 65534 stat ${n1}/${n2} flags
+expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} none
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 chflags ${n1}/${n2} UF_IMMUTABLE
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} UF_IMMUTABLE
+expect UF_IMMUTABLE -u 65534 -g 65534 stat ${n1}/${n2} flags
+expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} none
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chflags/06.t b/tools/regression/fstest/tests/chflags/06.t
new file mode 100644
index 0000000..cebfcdd
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/06.t
@@ -0,0 +1,21 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns ELOOP if too many symbolic links were encountered in translating the pathname"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP chflags ${n0}/test UF_IMMUTABLE
+expect ELOOP chflags ${n1}/test UF_IMMUTABLE
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/chflags/07.t b/tools/regression/fstest/tests/chflags/07.t
new file mode 100644
index 0000000..ef7c19c
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/07.t
@@ -0,0 +1,54 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns EPERM when the effective user ID does not match the owner of the file and the effective user ID is not the super-user"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..30"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 create ${n1} 0644
+expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE
+expect none stat ${n1} flags
+expect 0 chown ${n1} 65534 65534
+expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE
+expect none stat ${n1} flags
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n1} 0755
+expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE
+expect none stat ${n1} flags
+expect 0 chown ${n1} 65534 65534
+expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE
+expect none stat ${n1} flags
+expect 0 rmdir ${n1}
+
+expect 0 mkfifo ${n1} 0644
+expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE
+expect none stat ${n1} flags
+expect 0 chown ${n1} 65534 65534
+expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE
+expect none stat ${n1} flags
+expect 0 unlink ${n1}
+
+expect 0 symlink ${n2} ${n1}
+expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE
+expect none lstat ${n1} flags
+expect 0 lchown ${n1} 65534 65534
+expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE
+expect none lstat ${n1} flags
+expect 0 unlink ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chflags/08.t b/tools/regression/fstest/tests/chflags/08.t
new file mode 100644
index 0000000..9fa97b7
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/08.t
@@ -0,0 +1,70 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns EPERM when one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK is set and the user is not the super-user"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..78"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 create ${n1} 0644
+expect 0 chown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect 0 chflags ${n1} ${flag}
+ expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+ expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+done
+expect 0 chflags ${n1} none
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect 0 chflags ${n1} ${flag}
+ expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+ expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+done
+expect 0 chflags ${n1} none
+expect 0 rmdir ${n1}
+
+expect 0 mkfifo ${n1} 0644
+expect 0 chown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect 0 chflags ${n1} ${flag}
+ expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+ expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+done
+expect 0 chflags ${n1} none
+expect 0 unlink ${n1}
+
+expect 0 symlink ${n2} ${n1}
+expect 0 lchown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect 0 lchflags ${n1} ${flag}
+ expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE
+ expect ${flag} lstat ${n1} flags
+ expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE
+ expect ${flag} lstat ${n1} flags
+done
+expect 0 lchflags ${n1} none
+expect 0 unlink ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chflags/09.t b/tools/regression/fstest/tests/chflags/09.t
new file mode 100644
index 0000000..7b6a2cb
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/09.t
@@ -0,0 +1,82 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns EPERM when one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK is set and securelevel is greater than 0"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..102"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+old=`sysctl -n security.jail.chflags_allowed`
+sysctl security.jail.chflags_allowed=1 >/dev/null
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 create ${n1} 0644
+expect 0 chown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect 0 chflags ${n1} ${flag}
+ jexpect 1 `pwd` EPERM chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+ jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+ jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+done
+expect 0 chflags ${n1} none
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect 0 chflags ${n1} ${flag}
+ jexpect 1 `pwd` EPERM chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+ jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+ jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+done
+expect 0 chflags ${n1} none
+expect 0 rmdir ${n1}
+
+expect 0 mkfifo ${n1} 0644
+expect 0 chown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect 0 chflags ${n1} ${flag}
+ jexpect 1 `pwd` EPERM chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+ jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+ jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE
+ expect ${flag} stat ${n1} flags
+done
+expect 0 chflags ${n1} none
+expect 0 unlink ${n1}
+
+expect 0 symlink ${n2} ${n1}
+expect 0 lchown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect 0 lchflags ${n1} ${flag}
+ jexpect 1 `pwd` EPERM lchflags ${n1} UF_IMMUTABLE
+ expect ${flag} lstat ${n1} flags
+ jexpect 1 `pwd` EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE
+ expect ${flag} lstat ${n1} flags
+ jexpect 1 `pwd` EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE
+ expect ${flag} lstat ${n1} flags
+done
+expect 0 lchflags ${n1} none
+expect 0 unlink ${n1}
+
+sysctl security.jail.chflags_allowed=${old} >/dev/null
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chflags/10.t b/tools/regression/fstest/tests/chflags/10.t
new file mode 100644
index 0000000..57b33f4
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/10.t
@@ -0,0 +1,62 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns EPERM if non-super-user tries to set one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..62"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 create ${n1} 0644
+expect 0 chown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag}
+ expect none stat ${n1} flags
+ expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag}
+ expect none stat ${n1} flags
+done
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag}
+ expect none stat ${n1} flags
+ expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag}
+ expect none stat ${n1} flags
+done
+expect 0 rmdir ${n1}
+
+expect 0 mkfifo ${n1} 0644
+expect 0 chown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag}
+ expect none stat ${n1} flags
+ expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag}
+ expect none stat ${n1} flags
+done
+expect 0 unlink ${n1}
+
+expect 0 symlink ${n2} ${n1}
+expect 0 lchown ${n1} 65534 65534
+for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do
+ expect EPERM -u 65533 -g 65533 lchflags ${n1} ${flag}
+ expect none lstat ${n1} flags
+ expect EPERM -u 65534 -g 65534 lchflags ${n1} ${flag}
+ expect none lstat ${n1} flags
+done
+expect 0 unlink ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chflags/11.t b/tools/regression/fstest/tests/chflags/11.t
new file mode 100644
index 0000000..6c3887f
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/11.t
@@ -0,0 +1,70 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns EPERM if a user tries to set or remove the SF_SNAPSHOT flag"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..46"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 create ${n1} 0644
+expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect EPERM chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect 0 chown ${n1} 65534 65534
+expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect EPERM chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n1} 0644
+expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect EPERM chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect 0 chown ${n1} 65534 65534
+expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect EPERM chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect 0 rmdir ${n1}
+
+expect 0 mkfifo ${n1} 0644
+expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect EPERM chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect 0 chown ${n1} 65534 65534
+expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect EPERM chflags ${n1} SF_SNAPSHOT
+expect none stat ${n1} flags
+expect 0 unlink ${n1}
+
+expect 0 symlink ${n2} ${n1}
+expect EPERM -u 65534 -g 65534 lchflags ${n1} SF_SNAPSHOT
+expect none lstat ${n1} flags
+expect EPERM lchflags ${n1} SF_SNAPSHOT
+expect none lstat ${n1} flags
+expect 0 lchown ${n1} 65534 65534
+expect EPERM -u 65534 -g 65534 lchflags ${n1} SF_SNAPSHOT
+expect none lstat ${n1} flags
+expect EPERM lchflags ${n1} SF_SNAPSHOT
+expect none lstat ${n1} flags
+expect 0 unlink ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chflags/12.t b/tools/regression/fstest/tests/chflags/12.t
new file mode 100644
index 0000000..7b03436
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/12.t
@@ -0,0 +1,43 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns EROFS if the named file resides on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..14"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ expect 0 chflags ${n0}/${n1} UF_IMMUTABLE
+ expect UF_IMMUTABLE stat ${n0}/${n1} flags
+ expect 0 chflags ${n0}/${n1} none
+ expect none stat ${n0}/${n1} flags
+ mount -ur /dev/md${n}
+ expect EROFS chflags ${n0}/${n1} UF_IMMUTABLE
+ expect none stat ${n0}/${n1} flags
+ mount -uw /dev/md${n}
+ expect 0 chflags ${n0}/${n1} UF_IMMUTABLE
+ expect UF_IMMUTABLE stat ${n0}/${n1} flags
+ expect 0 chflags ${n0}/${n1} none
+ expect none stat ${n0}/${n1} flags
+ expect 0 unlink ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/chflags/13.t b/tools/regression/fstest/tests/chflags/13.t
new file mode 100644
index 0000000..edab3a9
--- /dev/null
+++ b/tools/regression/fstest/tests/chflags/13.t
@@ -0,0 +1,14 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chflags returns EFAULT if the path argument points outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..2"
+
+expect EFAULT chflags NULL UF_IMMUTABLE
+expect EFAULT chflags DEADCODE UF_IMMUTABLE
diff --git a/tools/regression/fstest/tests/chmod/00.t b/tools/regression/fstest/tests/chmod/00.t
new file mode 100644
index 0000000..e6349e8
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/00.t
@@ -0,0 +1,161 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod changes permission"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+if supported lchmod; then
+ echo "1..77"
+else
+ echo "1..58"
+fi
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n2} 0755
+cdir=`pwd`
+cd ${n2}
+
+expect 0 create ${n0} 0644
+expect 0644 stat ${n0} mode
+expect 0 chmod ${n0} 0111
+expect 0111 stat ${n0} mode
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0755 stat ${n0} mode
+expect 0 chmod ${n0} 0753
+expect 0753 stat ${n0} mode
+expect 0 rmdir ${n0}
+
+expect 0 mkfifo ${n0} 0644
+expect 0644 stat ${n0} mode
+expect 0 chmod ${n0} 0310
+expect 0310 stat ${n0} mode
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 symlink ${n0} ${n1}
+expect 0644 stat ${n1} mode
+expect 0 chmod ${n1} 0321
+expect 0321 stat ${n1} mode
+expect 0321 lstat ${n0} mode
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
+
+if supported lchmod; then
+ expect 0 create ${n0} 0644
+ expect 0 symlink ${n0} ${n1}
+ expect 0644 stat ${n1} mode
+ expect 0 lchmod ${n1} 0321
+ expect 0321 lstat ${n1} mode
+ expect 0 lchmod ${n1} 0531
+ expect 0531 lstat ${n1} mode
+ expect 0644 stat ${n0} mode
+ expect 0644 stat ${n1} mode
+ expect 0 unlink ${n0}
+ expect 0 unlink ${n1}
+fi
+
+# successful chmod(2) updates ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chmod ${n0} 0111
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chmod ${n0} 0753
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 rmdir ${n0}
+
+expect 0 mkfifo ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chmod ${n0} 0310
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+if supported lchmod; then
+ expect 0 symlink ${n1} ${n0}
+ ctime1=`${fstest} lstat ${n0} ctime`
+ sleep 1
+ expect 0 lchmod ${n0} 0321
+ ctime2=`${fstest} lstat ${n0} ctime`
+ test_check $ctime1 -lt $ctime2
+ expect 0 unlink ${n0}
+fi
+
+# unsuccessful chmod(2) does not update ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 chmod ${n0} 0111
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 chmod ${n0} 0753
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 rmdir ${n0}
+
+expect 0 mkfifo ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 chmod ${n0} 0310
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+if supported lchmod; then
+ expect 0 symlink ${n1} ${n0}
+ ctime1=`${fstest} lstat ${n0} ctime`
+ sleep 1
+ expect EPERM -u 65534 lchmod ${n0} 0321
+ ctime2=`${fstest} lstat ${n0} ctime`
+ test_check $ctime1 -eq $ctime2
+ expect 0 unlink ${n0}
+fi
+
+# POSIX: If the calling process does not have appropriate privileges, and if
+# the group ID of the file does not match the effective group ID or one of the
+# supplementary group IDs and if the file is a regular file, bit S_ISGID
+# (set-group-ID on execution) in the file's mode shall be cleared upon
+# successful return from chmod().
+
+expect 0 create ${n0} 0755
+expect 0 chown ${n0} 65535 65535
+expect 0 -u 65535 -g 65535 chmod ${n0} 02755
+expect 02755 stat ${n0} mode
+expect 0 -u 65535 -g 65535 chmod ${n0} 0755
+expect 0755 stat ${n0} mode
+
+# Unfortunately FreeBSD doesn't clear set-gid bit, but returns EPERM instead.
+case "${os}" in
+FreeBSD)
+ expect EPERM -u 65535 -g 65534 chmod ${n0} 02755
+ expect 0755 stat ${n0} mode
+ ;;
+*)
+ expect 0 -u 65535 -g 65534 chmod ${n0} 02755
+ expect 0755 stat ${n0} mode
+ ;;
+esac
+expect 0 unlink ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n2}
diff --git a/tools/regression/fstest/tests/chmod/01.t b/tools/regression/fstest/tests/chmod/01.t
new file mode 100644
index 0000000..469daa4
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/01.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns ENOTDIR if a component of the path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR chmod ${n0}/${n1}/test 0644
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chmod/02.t b/tools/regression/fstest/tests/chmod/02.t
new file mode 100644
index 0000000..c6343a6
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/02.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns ENAMETOOLONG if a component of a pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+expect 0 create ${name255} 0644
+expect 0 chmod ${name255} 0620
+expect 0620 stat ${name255} mode
+expect 0 unlink ${name255}
+expect ENAMETOOLONG chmod ${name256} 0620
diff --git a/tools/regression/fstest/tests/chmod/03.t b/tools/regression/fstest/tests/chmod/03.t
new file mode 100644
index 0000000..7b424d0
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/03.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns ENAMETOOLONG if an entire path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 create ${path1023} 0644
+expect 0 chmod ${path1023} 0642
+expect 0 unlink ${path1023}
+expect ENAMETOOLONG chmod ${path1024} 0642
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/chmod/04.t b/tools/regression/fstest/tests/chmod/04.t
new file mode 100644
index 0000000..a8987c2
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/04.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns ENOENT if the named file does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT chmod ${n0}/${n1}/test 0644
+expect ENOENT chmod ${n0}/${n1} 0644
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chmod/05.t b/tools/regression/fstest/tests/chmod/05.t
new file mode 100644
index 0000000..31fe859
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/05.t
@@ -0,0 +1,31 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns EACCES when search permission is denied for a component of the path prefix"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..14"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642
+expect 0642 -u 65534 -g 65534 stat ${n1}/${n2} mode
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 chmod ${n1}/${n2} 0620
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0420
+expect 0420 -u 65534 -g 65534 stat ${n1}/${n2} mode
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chmod/06.t b/tools/regression/fstest/tests/chmod/06.t
new file mode 100644
index 0000000..fc5f362
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/06.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns ELOOP if too many symbolic links were encountered in translating the pathname"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP chmod ${n0}/test 0644
+expect ELOOP chmod ${n1}/test 0644
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/chmod/07.t b/tools/regression/fstest/tests/chmod/07.t
new file mode 100644
index 0000000..dfa1b27
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/07.t
@@ -0,0 +1,31 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..14"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642
+expect 0642 stat ${n1}/${n2} mode
+expect EPERM -u 65533 -g 65533 chmod ${n1}/${n2} 0641
+expect 0642 stat ${n1}/${n2} mode
+expect 0 chown ${n1}/${n2} 0 0
+expect EPERM -u 65534 -g 65534 chmod ${n1}/${n2} 0641
+expect 0642 stat ${n1}/${n2} mode
+expect 0 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chmod/08.t b/tools/regression/fstest/tests/chmod/08.t
new file mode 100644
index 0000000..110bace
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/08.t
@@ -0,0 +1,59 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns EPERM if the named file has its immutable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..40"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM chmod ${n0} 0600
+expect 0644 stat ${n0} mode
+expect 0 chflags ${n0} none
+expect 0 chmod ${n0} 0600
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM chmod ${n0} 0600
+expect 0644 stat ${n0} mode
+expect 0 chflags ${n0} none
+expect 0 chmod ${n0} 0600
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_APPEND
+expect EPERM chmod ${n0} 0600
+expect 0644 stat ${n0} mode
+expect 0 chflags ${n0} none
+expect 0 chmod ${n0} 0600
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_APPEND
+expect EPERM chmod ${n0} 0600
+expect 0644 stat ${n0} mode
+expect 0 chflags ${n0} none
+expect 0 chmod ${n0} 0600
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 chmod ${n0} 0600
+expect 0600 stat ${n0} mode
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 chmod ${n0} 0600
+expect 0600 stat ${n0} mode
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/chmod/09.t b/tools/regression/fstest/tests/chmod/09.t
new file mode 100644
index 0000000..edf1f3a
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/09.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns EROFS if the named file resides on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..10"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ expect 0 chmod ${n0}/${n1} 0640
+ expect 0640 stat ${n0}/${n1} mode
+ mount -ur /dev/md${n}
+ expect EROFS chmod ${n0}/${n1} 0600
+ expect 0640 stat ${n0}/${n1} mode
+ mount -uw /dev/md${n}
+ expect 0 chmod ${n0}/${n1} 0600
+ expect 0600 stat ${n0}/${n1} mode
+ expect 0 unlink ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/chmod/10.t b/tools/regression/fstest/tests/chmod/10.t
new file mode 100644
index 0000000..867a653
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/10.t
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns EFAULT if the path argument points outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..2"
+
+expect EFAULT chmod NULL 0644
+expect EFAULT chmod DEADCODE 0644
diff --git a/tools/regression/fstest/tests/chmod/11.t b/tools/regression/fstest/tests/chmod/11.t
new file mode 100644
index 0000000..f7bc056
--- /dev/null
+++ b/tools/regression/fstest/tests/chmod/11.t
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chmod returns EFTYPE if the effective user ID is not the super-user, the mode includes the sticky bit (S_ISVTX), and path does not refer to a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..20"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chmod ${n1} 01755
+expect 01755 stat ${n1} mode
+expect 0 rmdir ${n1}
+
+expect 0 create ${n1} 0644
+expect 0 chmod ${n1} 01644
+expect 01644 stat ${n1} mode
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 chmod ${n1} 01755
+expect 01755 stat ${n1} mode
+expect 0 rmdir ${n1}
+
+expect 0 create ${n1} 0644
+expect 0 chown ${n1} 65534 65534
+case "${os}" in
+FreeBSD)
+ expect EFTYPE -u 65534 -g 65534 chmod ${n1} 01644
+ expect 0644 stat ${n1} mode
+ ;;
+SunOS)
+ expect 0 -u 65534 -g 65534 chmod ${n1} 01644
+ expect 0644 stat ${n1} mode
+ ;;
+Linux)
+ expect 0 -u 65534 -g 65534 chmod ${n1} 01644
+ expect 01644 stat ${n1} mode
+ ;;
+esac
+expect 0 unlink ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chown/00.t b/tools/regression/fstest/tests/chown/00.t
new file mode 100644
index 0000000..154129a
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/00.t
@@ -0,0 +1,304 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown changes ownership"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+if supported lchmod; then
+ echo "1..186"
+else
+ echo "1..171"
+fi
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n2} 0755
+cdir=`pwd`
+cd ${n2}
+
+# super-user can always modify ownership
+# 2
+expect 0 create ${n0} 0644
+expect 0 chown ${n0} 123 456
+expect 123,456 lstat ${n0} uid,gid
+expect 0 chown ${n0} 0 0
+expect 0,0 lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+# 8
+expect 0 mkfifo ${n0} 0644
+expect 0 chown ${n0} 123 456
+expect 123,456 lstat ${n0} uid,gid
+expect 0 chown ${n0} 0 0
+expect 0,0 lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+# 14
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 123 456
+expect 123,456 lstat ${n0} uid,gid
+expect 0 chown ${n0} 0 0
+expect 0,0 lstat ${n0} uid,gid
+expect 0 rmdir ${n0}
+# 20
+expect 0 create ${n0} 0644
+expect 0 symlink ${n0} ${n1}
+expect 0 chown ${n1} 123 456
+expect 123,456 stat ${n1} uid,gid
+expect 123,456 stat ${n0} uid,gid
+expect 0 lchown ${n1} 135 579
+expect 135,579 lstat ${n1} uid,gid
+expect 123,456 stat ${n1} uid,gid
+expect 123,456 stat ${n0} uid,gid
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
+
+# non-super-user can modify file group if he is owner of a file and
+# gid he is setting is in his groups list.
+# 31
+expect 0 create ${n0} 0644
+expect 0 chown ${n0} 65534 65533
+expect 65534,65533 lstat ${n0} uid,gid
+expect 0 -u 65534 -g 65532,65531 chown ${n0} -1 65532
+expect 65534,65532 lstat ${n0} uid,gid
+expect 0 -u 65534 -g 65532,65531 chown ${n0} 65534 65531
+expect 65534,65531 lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+
+# chown(2) return 0 if user is not owner of a file, but chown(2) is called
+# with both uid and gid equal to -1.
+# 39
+expect 0 create ${n0} 0644
+expect 0 chown ${n0} 65534 65533
+expect 0 -u 65532 -g 65531 chown ${n0} -1 -1
+expect 0 unlink ${n0}
+
+# when super-user calls chown(2), set-uid and set-gid bits are not removed.
+# 43
+expect 0 create ${n0} 0644
+expect 0 chown ${n0} 65534 65533
+expect 0 chmod ${n0} 06555
+expect 06555 lstat ${n0} mode
+expect 0 chown ${n0} 65532 65531
+expect 06555 lstat ${n0} mode
+expect 0 unlink ${n0}
+# 50
+expect 0 create ${n0} 0644
+expect 0 chown ${n0} 0 0
+expect 0 chmod ${n0} 06555
+expect 06555 lstat ${n0} mode
+expect 0 chown ${n0} 65534 65533
+expect 06555 lstat ${n0} mode
+expect 0 unlink ${n0}
+# 57
+expect 0 create ${n0} 0644
+expect 0 chown ${n0} 65534 65533
+expect 0 chmod ${n0} 06555
+expect 06555 lstat ${n0} mode
+expect 0 chown ${n0} 0 0
+expect 06555 lstat ${n0} mode
+expect 0 unlink ${n0}
+
+# when non-super-user calls chown(2) successfully, set-uid and set-gid bits are
+# removed, except when both uid and gid are equal to -1.
+# 64
+expect 0 create ${n0} 0644
+expect 0 chown ${n0} 65534 65533
+expect 0 chmod ${n0} 06555
+expect 06555 lstat ${n0} mode
+expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532
+expect 0555,65534,65532 lstat ${n0} mode,uid,gid
+expect 0 chmod ${n0} 06555
+expect 06555 lstat ${n0} mode
+expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533
+expect 0555,65534,65533 lstat ${n0} mode,uid,gid
+expect 0 chmod ${n0} 06555
+expect 06555 lstat ${n0} mode
+expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1
+expect 06555,65534,65533 lstat ${n0} mode,uid,gid
+expect 0 unlink ${n0}
+# 79
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 65534 65533
+expect 0 chmod ${n0} 06555
+expect 06555 lstat ${n0} mode
+expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532
+expect 0555,65534,65532 lstat ${n0} mode,uid,gid
+expect 0 chmod ${n0} 06555
+expect 06555 lstat ${n0} mode
+expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533
+expect 0555,65534,65533 lstat ${n0} mode,uid,gid
+expect 0 chmod ${n0} 06555
+expect 06555 lstat ${n0} mode
+expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1
+expect 06555,65534,65533 lstat ${n0} mode,uid,gid
+expect 0 rmdir ${n0}
+# 94
+if supported lchmod; then
+ expect 0 symlink ${n1} ${n0}
+ expect 0 lchown ${n0} 65534 65533
+ expect 0 lchmod ${n0} 06555
+ expect 06555 lstat ${n0} mode
+ expect 0 -u 65534 -g 65533,65532 lchown ${n0} 65534 65532
+ expect 0555,65534,65532 lstat ${n0} mode,uid,gid
+ expect 0 lchmod ${n0} 06555
+ expect 06555 lstat ${n0} mode
+ expect 0 -u 65534 -g 65533,65532 lchown ${n0} -1 65533
+ expect 0555,65534,65533 lstat ${n0} mode,uid,gid
+ expect 0 lchmod ${n0} 06555
+ expect 06555 lstat ${n0} mode
+ expect 0 -u 65534 -g 65533,65532 lchown ${n0} -1 -1
+ expect 06555,65534,65533 lstat ${n0} mode,uid,gid
+ expect 0 unlink ${n0}
+fi
+
+# successfull chown(2) call (except uid and gid equal to -1) updates ctime.
+# 109
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 65534,65533 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+# 114
+expect 0 mkdir ${n0} 0755
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 65534,65533 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 rmdir ${n0}
+# 119
+expect 0 mkfifo ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 65534,65533 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+# 124
+expect 0 symlink ${n1} ${n0}
+ctime1=`${fstest} lstat ${n0} ctime`
+sleep 1
+expect 0 lchown ${n0} 65534 65533
+expect 65534,65533 lstat ${n0} uid,gid
+ctime2=`${fstest} lstat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+# 129
+expect 0 create ${n0} 0644
+expect 0 chown ${n0} 65534 65533
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532
+expect 65534,65532 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+# 135
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 65534 65533
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532
+expect 65534,65532 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 rmdir ${n0}
+# 141
+expect 0 mkfifo ${n0} 0644
+expect 0 chown ${n0} 65534 65533
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} 65534 65533
+expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532
+expect 65534,65532 lstat ${n0} uid,gid
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+# 148
+expect 0 symlink ${n1} ${n0}
+expect 0 lchown ${n0} 65534 65533
+ctime1=`${fstest} lstat ${n0} ctime`
+sleep 1
+expect 0 -u 65534 -g 65532 lchown ${n0} 65534 65532
+expect 65534,65532 lstat ${n0} uid,gid
+ctime2=`${fstest} lstat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+# 154
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} -1 -1
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+# 158
+expect 0 mkdir ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} -1 -1
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 rmdir ${n0}
+# 162
+expect 0 mkfifo ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 chown ${n0} -1 -1
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+# 166
+expect 0 symlink ${n1} ${n0}
+ctime1=`${fstest} lstat ${n0} ctime`
+sleep 1
+expect 0 lchown ${n0} -1 -1
+ctime2=`${fstest} lstat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+# unsuccessful chown(2) does not update ctime.
+# 170
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 chown ${n0} 65534 -1
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+# 174
+expect 0 mkdir ${n0} 0755
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 -g 65534 chown ${n0} -1 65534
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 rmdir ${n0}
+# 178
+expect 0 mkfifo ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 -g 65534 chown ${n0} 65534 65534
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+# 182
+expect 0 symlink ${n1} ${n0}
+ctime1=`${fstest} lstat ${n0} ctime`
+sleep 1
+expect EPERM -u 65534 -g 65534 lchown ${n0} 65534 65534
+ctime2=`${fstest} lstat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+# 186
+cd ${cdir}
+expect 0 rmdir ${n2}
diff --git a/tools/regression/fstest/tests/chown/01.t b/tools/regression/fstest/tests/chown/01.t
new file mode 100644
index 0000000..9559e6e
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/01.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns ENOTDIR if a component of the path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR chown ${n0}/${n1}/test 65534 65534
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chown/02.t b/tools/regression/fstest/tests/chown/02.t
new file mode 100644
index 0000000..12e6b2e
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/02.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns ENAMETOOLONG if a component of a pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+expect 0 create ${name255} 0644
+expect 0 chown ${name255} 65534 65534
+expect 65534,65534 stat ${name255} uid,gid
+expect 0 unlink ${name255}
+expect ENAMETOOLONG chown ${name256} 65533 65533
diff --git a/tools/regression/fstest/tests/chown/03.t b/tools/regression/fstest/tests/chown/03.t
new file mode 100644
index 0000000..bb3f74b
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/03.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns ENAMETOOLONG if an entire path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 create ${path1023} 0644
+expect 0 chown ${path1023} 65534 65534
+expect 0 unlink ${path1023}
+expect ENAMETOOLONG chown ${path1024} 65533 65533
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/chown/04.t b/tools/regression/fstest/tests/chown/04.t
new file mode 100644
index 0000000..8575de7
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/04.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns ENOENT if the named file does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT chown ${n0}/${n1}/test 65534 65534
+expect ENOENT chown ${n0}/${n1} 65534 65534
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chown/05.t b/tools/regression/fstest/tests/chown/05.t
new file mode 100644
index 0000000..844ffca
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/05.t
@@ -0,0 +1,32 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns EACCES when search permission is denied for a component of the path prefix"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..15"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65533,65534 chown ${n1}/${n2} -1 65533
+expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65533,65534 chown ${n1}/${n2} -1 65534
+expect 0 chmod ${n1} 0755
+expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid
+expect 0 -u 65534 -g 65533,65534 chown ${n1}/${n2} -1 65534
+expect 65534,65534 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chown/06.t b/tools/regression/fstest/tests/chown/06.t
new file mode 100644
index 0000000..8e6d2cc
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/06.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns ELOOP if too many symbolic links were encountered in translating the pathname"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP chown ${n0}/test 65534 65534
+expect ELOOP chown ${n1}/test 65534 65534
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/chown/07.t b/tools/regression/fstest/tests/chown/07.t
new file mode 100644
index 0000000..a9789eb
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/07.t
@@ -0,0 +1,28 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user and the process is not an owner of the file"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..11"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
+expect EPERM -u 65534 -g 65534 chown ${n1}/${n2} 65533 65533
+expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65534 65534
+expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65533 65533
+expect EPERM -u 65534 -g 65534 chown ${n1}/${n2} -1 65533
+expect 0 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/chown/08.t b/tools/regression/fstest/tests/chown/08.t
new file mode 100644
index 0000000..9fed455
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/08.t
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns EPERM if the named file has its immutable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..34"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM chown ${n0} 65534 65534
+expect 0 chflags ${n0} none
+expect 0 chown ${n0} 65534 65534
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM chown ${n0} 65534 65534
+expect 0 chflags ${n0} none
+expect 0 chown ${n0} 65534 65534
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_APPEND
+expect EPERM chown ${n0} 65534 65534
+expect 0 chflags ${n0} none
+expect 0 chown ${n0} 65534 65534
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_APPEND
+expect EPERM chown ${n0} 65534 65534
+expect 0 chflags ${n0} none
+expect 0 chown ${n0} 65534 65534
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 chown ${n0} 65534 65534
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 chown ${n0} 65534 65534
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/chown/09.t b/tools/regression/fstest/tests/chown/09.t
new file mode 100644
index 0000000..9751f97
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/09.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns EROFS if the named file resides on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:{fs}" in
+FreeBSD:UFS)
+ echo "1..10"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ expect 0 chown ${n0}/${n1} 65534 65534
+ expect 65534,65534 stat ${n0}/${n1} uid,gid
+ mount -ur /dev/md${n}
+ expect EROFS chown ${n0}/${n1} 65533 65533
+ expect 65534,65534 stat ${n0}/${n1} uid,gid
+ mount -uw /dev/md${n}
+ expect 0 chown ${n0}/${n1} 65533 65533
+ expect 65533,65533 stat ${n0}/${n1} uid,gid
+ expect 0 unlink ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/chown/10.t b/tools/regression/fstest/tests/chown/10.t
new file mode 100644
index 0000000..1ef6f85
--- /dev/null
+++ b/tools/regression/fstest/tests/chown/10.t
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="chown returns EFAULT if the path argument points outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..2"
+
+expect EFAULT chown NULL 65534 65534
+expect EFAULT chown DEADCODE 65534 65534
diff --git a/tools/regression/fstest/tests/conf b/tools/regression/fstest/tests/conf
new file mode 100644
index 0000000..54183e4
--- /dev/null
+++ b/tools/regression/fstest/tests/conf
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# fstest configuration file
+
+# Known operating systems: FreeBSD, SunOS, Linux
+os=`uname`
+
+# Known file systems: UFS, ZFS, other
+fs="UFS"
diff --git a/tools/regression/fstest/tests/link/00.t b/tools/regression/fstest/tests/link/00.t
new file mode 100644
index 0000000..e5ac67d
--- /dev/null
+++ b/tools/regression/fstest/tests/link/00.t
@@ -0,0 +1,151 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link creates hardlinks"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..82"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+n3=`namegen`
+
+expect 0 mkdir ${n3} 0755
+cdir=`pwd`
+cd ${n3}
+
+expect 0 create ${n0} 0644
+expect regular,0644,1 lstat ${n0} type,mode,nlink
+
+expect 0 link ${n0} ${n1}
+expect regular,0644,2 lstat ${n0} type,mode,nlink
+expect regular,0644,2 lstat ${n1} type,mode,nlink
+
+expect 0 link ${n1} ${n2}
+expect regular,0644,3 lstat ${n0} type,mode,nlink
+expect regular,0644,3 lstat ${n1} type,mode,nlink
+expect regular,0644,3 lstat ${n2} type,mode,nlink
+
+expect 0 chmod ${n1} 0201
+expect 0 chown ${n1} 65534 65533
+
+expect regular,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid
+expect regular,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
+expect regular,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid
+
+expect 0 unlink ${n0}
+expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
+expect regular,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
+expect regular,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid
+
+expect 0 unlink ${n2}
+expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
+expect regular,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
+expect ENOENT lstat ${n2} type,mode,nlink,uid,gid
+
+expect 0 unlink ${n1}
+expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
+expect ENOENT lstat ${n1} type,mode,nlink,uid,gid
+expect ENOENT lstat ${n2} type,mode,nlink,uid,gid
+
+expect 0 mkfifo ${n0} 0644
+expect fifo,0644,1 lstat ${n0} type,mode,nlink
+
+expect 0 link ${n0} ${n1}
+expect fifo,0644,2 lstat ${n0} type,mode,nlink
+expect fifo,0644,2 lstat ${n1} type,mode,nlink
+
+expect 0 link ${n1} ${n2}
+expect fifo,0644,3 lstat ${n0} type,mode,nlink
+expect fifo,0644,3 lstat ${n1} type,mode,nlink
+expect fifo,0644,3 lstat ${n2} type,mode,nlink
+
+expect 0 chmod ${n1} 0201
+expect 0 chown ${n1} 65534 65533
+
+expect fifo,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid
+expect fifo,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
+expect fifo,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid
+
+expect 0 unlink ${n0}
+expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
+expect fifo,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
+expect fifo,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid
+
+expect 0 unlink ${n2}
+expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
+expect fifo,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
+expect ENOENT lstat ${n2} type,mode,nlink,uid,gid
+
+expect 0 unlink ${n1}
+expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
+expect ENOENT lstat ${n1} type,mode,nlink,uid,gid
+expect ENOENT lstat ${n2} type,mode,nlink,uid,gid
+
+# successful link(2) updates ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+dctime1=`${fstest} stat . ctime`
+dmtime1=`${fstest} stat . mtime`
+sleep 1
+expect 0 link ${n0} ${n1}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+dctime2=`${fstest} stat . ctime`
+test_check $dctime1 -lt $dctime2
+dmtime2=`${fstest} stat . mtime`
+test_check $dctime1 -lt $dmtime2
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
+
+expect 0 mkfifo ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+dctime1=`${fstest} stat . ctime`
+dmtime1=`${fstest} stat . mtime`
+sleep 1
+expect 0 link ${n0} ${n1}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+dctime2=`${fstest} stat . ctime`
+test_check $dctime1 -lt $dctime2
+dmtime2=`${fstest} stat . mtime`
+test_check $dctime1 -lt $dmtime2
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
+
+# unsuccessful link(2) does not update ctime.
+expect 0 create ${n0} 0644
+expect 0 chown ${n0} 65534 -1
+ctime1=`${fstest} stat ${n0} ctime`
+dctime1=`${fstest} stat . ctime`
+dmtime1=`${fstest} stat . mtime`
+sleep 1
+expect EACCES -u 65534 link ${n0} ${n1}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+dctime2=`${fstest} stat . ctime`
+test_check $dctime1 -eq $dctime2
+dmtime2=`${fstest} stat . mtime`
+test_check $dctime1 -eq $dmtime2
+expect 0 unlink ${n0}
+
+expect 0 mkfifo ${n0} 0644
+expect 0 chown ${n0} 65534 -1
+ctime1=`${fstest} stat ${n0} ctime`
+dctime1=`${fstest} stat . ctime`
+dmtime1=`${fstest} stat . mtime`
+sleep 1
+expect EACCES -u 65534 link ${n0} ${n1}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+dctime2=`${fstest} stat . ctime`
+test_check $dctime1 -eq $dctime2
+dmtime2=`${fstest} stat . mtime`
+test_check $dctime1 -eq $dmtime2
+expect 0 unlink ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n3}
diff --git a/tools/regression/fstest/tests/link/01.t b/tools/regression/fstest/tests/link/01.t
new file mode 100644
index 0000000..9a740ed
--- /dev/null
+++ b/tools/regression/fstest/tests/link/01.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns ENOTDIR if a component of either path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..8"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR link ${n0}/${n1}/test ${n0}/${n2}
+expect 0 create ${n0}/${n2} 0644
+expect ENOTDIR link ${n0}/${n2} ${n0}/${n1}/test
+expect 0 unlink ${n0}/${n1}
+expect 0 unlink ${n0}/${n2}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/02.t b/tools/regression/fstest/tests/link/02.t
new file mode 100644
index 0000000..436b627
--- /dev/null
+++ b/tools/regression/fstest/tests/link/02.t
@@ -0,0 +1,23 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns ENAMETOOLONG if a component of either pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..10"
+
+n0=`namegen`
+
+expect 0 create ${name255} 0644
+expect 0 link ${name255} ${n0}
+expect 0 unlink ${name255}
+expect 0 link ${n0} ${name255}
+expect 0 unlink ${n0}
+expect 0 unlink ${name255}
+
+expect 0 create ${n0} 0644
+expect ENAMETOOLONG link ${n0} ${name256}
+expect 0 unlink ${n0}
+expect ENAMETOOLONG link ${name256} ${n0}
diff --git a/tools/regression/fstest/tests/link/03.t b/tools/regression/fstest/tests/link/03.t
new file mode 100644
index 0000000..8fcb77f
--- /dev/null
+++ b/tools/regression/fstest/tests/link/03.t
@@ -0,0 +1,28 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns ENAMETOOLONG if an entire length of either path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..16"
+
+n0=`namegen`
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 create ${path1023} 0644
+expect 0 link ${path1023} ${n0}
+expect 0 unlink ${path1023}
+expect 0 link ${n0} ${path1023}
+expect 0 unlink ${path1023}
+expect ENAMETOOLONG link ${n0} ${path1024}
+expect 0 unlink ${n0}
+expect ENAMETOOLONG link ${path1024} ${n0}
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/link/04.t b/tools/regression/fstest/tests/link/04.t
new file mode 100644
index 0000000..d27beef
--- /dev/null
+++ b/tools/regression/fstest/tests/link/04.t
@@ -0,0 +1,20 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns ENOENT if a component of either path prefix does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT link ${n0}/${n1}/test ${n2}
+expect 0 create ${n2} 0644
+expect ENOENT link ${n2} ${n0}/${n1}/test
+expect 0 unlink ${n2}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/05.t b/tools/regression/fstest/tests/link/05.t
new file mode 100644
index 0000000..c1da717
--- /dev/null
+++ b/tools/regression/fstest/tests/link/05.t
@@ -0,0 +1,41 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EMLINK if the link count of the file named by name1 would exceed 32767"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..5"
+
+ n0=`namegen`
+ n1=`namegen`
+ n2=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs -i 1 /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ i=1
+ while :; do
+ link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+ done
+ test_check $i -eq 32767
+
+ expect EMLINK link ${n0}/${n1} ${n0}/${n2}
+
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/link/06.t b/tools/regression/fstest/tests/link/06.t
new file mode 100644
index 0000000..3ce0919
--- /dev/null
+++ b/tools/regression/fstest/tests/link/06.t
@@ -0,0 +1,43 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EACCES when a component of either path prefix denies search permission"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..18"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+n3=`namegen`
+n4=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 mkdir ${n2} 0755
+expect 0 chown ${n2} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644
+
+expect 0 -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4}
+expect 0 -u 65534 -g 65534 unlink ${n2}/${n4}
+
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n1}/${n4}
+expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4}
+
+expect 0 chmod ${n1} 0755
+expect 0 chmod ${n2} 0644
+expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4}
+
+expect 0 unlink ${n1}/${n3}
+expect 0 rmdir ${n1}
+expect 0 rmdir ${n2}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/07.t b/tools/regression/fstest/tests/link/07.t
new file mode 100644
index 0000000..f9d35e7
--- /dev/null
+++ b/tools/regression/fstest/tests/link/07.t
@@ -0,0 +1,41 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EACCES when the requested link requires writing in a directory with a mode that denies write permission"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..17"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+n3=`namegen`
+n4=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 mkdir ${n2} 0755
+expect 0 chown ${n2} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644
+
+expect 0 -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4}
+expect 0 -u 65534 -g 65534 unlink ${n2}/${n4}
+
+expect 0 chmod ${n2} 0555
+expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4}
+expect 0 chmod ${n1} 0555
+expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n1}/${n4}
+expect 0 chmod ${n1} 0755
+
+expect 0 unlink ${n1}/${n3}
+expect 0 rmdir ${n1}
+expect 0 rmdir ${n2}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/08.t b/tools/regression/fstest/tests/link/08.t
new file mode 100644
index 0000000..f9d9445
--- /dev/null
+++ b/tools/regression/fstest/tests/link/08.t
@@ -0,0 +1,24 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns ELOOP if too many symbolic links were encountered in translating one of the pathnames"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..10"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP link ${n0}/test ${n2}
+expect ELOOP link ${n1}/test ${n2}
+expect 0 create ${n2} 0644
+expect ELOOP link ${n2} ${n0}/test
+expect ELOOP link ${n2} ${n1}/test
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
+expect 0 unlink ${n2}
diff --git a/tools/regression/fstest/tests/link/09.t b/tools/regression/fstest/tests/link/09.t
new file mode 100644
index 0000000..224395f
--- /dev/null
+++ b/tools/regression/fstest/tests/link/09.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns ENOENT if the source file does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 link ${n0} ${n1}
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
+expect ENOENT link ${n0} ${n1}
diff --git a/tools/regression/fstest/tests/link/10.t b/tools/regression/fstest/tests/link/10.t
new file mode 100644
index 0000000..beb141c
--- /dev/null
+++ b/tools/regression/fstest/tests/link/10.t
@@ -0,0 +1,32 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EEXIST if the destination file does exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..14"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 create ${n0} 0644
+
+expect 0 create ${n1} 0644
+expect EEXIST link ${n0} ${n1}
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n1} 0755
+expect EEXIST link ${n0} ${n1}
+expect 0 rmdir ${n1}
+
+expect 0 symlink test ${n1}
+expect EEXIST link ${n0} ${n1}
+expect 0 unlink ${n1}
+
+expect 0 mkfifo ${n1} 0644
+expect EEXIST link ${n0} ${n1}
+expect 0 unlink ${n1}
+
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/link/11.t b/tools/regression/fstest/tests/link/11.t
new file mode 100644
index 0000000..cf31c9e
--- /dev/null
+++ b/tools/regression/fstest/tests/link/11.t
@@ -0,0 +1,41 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EPERM if the source file is a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+case "${os}:${fs}" in
+SunOS:UFS)
+ echo "1..10"
+
+ expect 0 mkdir ${n0} 0755
+ expect 0 link ${n0} ${n1}
+ expect 0 unlink ${n1}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ echo "1..9"
+
+ expect 0 mkdir ${n0} 0755
+ expect EPERM link ${n0} ${n1}
+ expect 0 rmdir ${n0}
+ ;;
+esac
+
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 65534 65534
+cdir=`pwd`
+cd ${n0}
+
+expect 0 -u 65534 -g 65534 mkdir ${n1} 0755
+expect EPERM -u 65534 -g 65534 link ${n1} ${n2}
+expect 0 -u 65534 -g 65534 rmdir ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/12.t b/tools/regression/fstest/tests/link/12.t
new file mode 100644
index 0000000..1f1efdc
--- /dev/null
+++ b/tools/regression/fstest/tests/link/12.t
@@ -0,0 +1,55 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EPERM if the source file has its immutable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..32"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 create ${n0} 0644
+
+expect 0 link ${n0} ${n1}
+expect 0 unlink ${n1}
+
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM link ${n0} ${n1}
+expect 0 chflags ${n0} none
+expect 0 link ${n0} ${n1}
+expect 0 unlink ${n1}
+
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM link ${n0} ${n1}
+expect 0 chflags ${n0} none
+expect 0 link ${n0} ${n1}
+expect 0 unlink ${n1}
+
+expect 0 chflags ${n0} SF_APPEND
+expect EPERM link ${n0} ${n1}
+expect 0 chflags ${n0} none
+expect 0 link ${n0} ${n1}
+expect 0 unlink ${n1}
+
+expect 0 chflags ${n0} UF_APPEND
+expect EPERM link ${n0} ${n1}
+expect 0 chflags ${n0} none
+expect 0 link ${n0} ${n1}
+expect 0 unlink ${n1}
+
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 link ${n0} ${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n1}
+
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 link ${n0} ${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n1}
+
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/link/13.t b/tools/regression/fstest/tests/link/13.t
new file mode 100644
index 0000000..f6a00ea
--- /dev/null
+++ b/tools/regression/fstest/tests/link/13.t
@@ -0,0 +1,56 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EPERM if the parent directory of the destination file has its immutable flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..32"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 create ${n0}/${n1} 0644
+expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 0 unlink ${n0}/${n2}
+
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM link ${n0}/${n1} ${n0}/${n2}
+expect 0 chflags ${n0} none
+expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 0 unlink ${n0}/${n2}
+
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM link ${n0}/${n1} ${n0}/${n2}
+expect 0 chflags ${n0} none
+expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 0 unlink ${n0}/${n2}
+
+expect 0 chflags ${n0} SF_APPEND
+expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n2}
+
+expect 0 chflags ${n0} UF_APPEND
+expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n2}
+
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n2}
+
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 link ${n0}/${n1} ${n0}/${n2}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n2}
+
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/link/14.t b/tools/regression/fstest/tests/link/14.t
new file mode 100644
index 0000000..2b0dca3
--- /dev/null
+++ b/tools/regression/fstest/tests/link/14.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EXDEV if the source and the destination files are on different file systems"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}" in
+FreeBSD)
+ echo "1..8"
+
+ n0=`namegen`
+ n1=`namegen`
+ n2=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ expect EXDEV link ${n0}/${n1} ${n2}
+ expect 0 unlink ${n0}/${n1}
+ expect 0 create ${n1} 0644
+ expect EXDEV link ${n1} ${n0}/${n2}
+ expect 0 unlink ${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/link/15.t b/tools/regression/fstest/tests/link/15.t
new file mode 100644
index 0000000..42c6ccf
--- /dev/null
+++ b/tools/regression/fstest/tests/link/15.t
@@ -0,0 +1,38 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns ENOSPC if the directory in which the entry for the new link is being placed cannot be extended because there is no space left on the file system containing the directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..4"
+
+ n0=`namegen`
+ n1=`namegen`
+ n2=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 256k`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ i=0
+ while :; do
+ link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+ done
+ expect ENOSPC link ${n0}/${n1} ${n0}/${n2}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/link/16.t b/tools/regression/fstest/tests/link/16.t
new file mode 100644
index 0000000..0adb225
--- /dev/null
+++ b/tools/regression/fstest/tests/link/16.t
@@ -0,0 +1,39 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EROFS if the requested link requires writing in a directory on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}" in
+FreeBSD)
+ echo "1..9"
+
+ n0=`namegen`
+ n1=`namegen`
+ n2=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+
+ expect 0 link ${n0}/${n1} ${n0}/${n2}
+ expect 0 unlink ${n0}/${n2}
+ mount -ur /dev/md${n}
+ expect EROFS link ${n0}/${n1} ${n0}/${n2}
+ mount -uw /dev/md${n}
+ expect 0 link ${n0}/${n1} ${n0}/${n2}
+ expect 0 unlink ${n0}/${n2}
+
+ expect 0 unlink ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/link/17.t b/tools/regression/fstest/tests/link/17.t
new file mode 100644
index 0000000..cb56128
--- /dev/null
+++ b/tools/regression/fstest/tests/link/17.t
@@ -0,0 +1,20 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="link returns EFAULT if one of the pathnames specified is outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..8"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect EFAULT link ${n0} NULL
+expect EFAULT link ${n0} DEADCODE
+expect 0 unlink ${n0}
+expect EFAULT link NULL ${n0}
+expect EFAULT link DEADCODE ${n0}
+expect EFAULT link NULL DEADCODE
+expect EFAULT link DEADCODE NULL
diff --git a/tools/regression/fstest/tests/misc.sh b/tools/regression/fstest/tests/misc.sh
new file mode 100644
index 0000000..0ca8065
--- /dev/null
+++ b/tools/regression/fstest/tests/misc.sh
@@ -0,0 +1,96 @@
+# $FreeBSD$
+
+ntest=1
+
+name253="_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_12"
+name255="${name253}34"
+name256="${name255}5"
+path1021="${name255}/${name255}/${name255}/${name253}"
+path1023="${path1021}/x"
+path1024="${path1023}x"
+
+echo ${dir} | egrep '^/' >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+ maindir="${dir}/../.."
+else
+ maindir="`pwd`/${dir}/../.."
+fi
+fstest="${maindir}/fstest"
+. ${maindir}/tests/conf
+
+expect()
+{
+ e="${1}"
+ shift
+ r=`${fstest} $* 2>/dev/null | tail -1`
+ echo "${r}" | egrep '^'${e}'$' >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "ok ${ntest}"
+ else
+ echo "not ok ${ntest}"
+ fi
+ ntest=`expr $ntest + 1`
+}
+
+jexpect()
+{
+ s="${1}"
+ d="${2}"
+ e="${3}"
+ shift 3
+ r=`jail -s ${s} / fstest 127.0.0.1 /bin/sh -c "cd ${d} && ${fstest} $* 2>/dev/null" | tail -1`
+ echo "${r}" | egrep '^'${e}'$' >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "ok ${ntest}"
+ else
+ echo "not ok ${ntest}"
+ fi
+ ntest=`expr $ntest + 1`
+}
+
+test_check()
+{
+ if [ $* ]; then
+ echo "ok ${ntest}"
+ else
+ echo "not ok ${ntest}"
+ fi
+ ntest=`expr $ntest + 1`
+}
+
+namegen()
+{
+ echo "fstest_`dd if=/dev/random bs=1k count=1 2>/dev/null | openssl md5`"
+}
+
+quick_exit()
+{
+ echo "1..1"
+ echo "ok 1"
+ exit 0
+}
+
+supported()
+{
+ case "${1}" in
+ chflags)
+ if [ ${os} != "FreeBSD" -o ${fs} != "UFS" ]; then
+ return 1
+ fi
+ ;;
+ lchmod)
+ if [ ${os} != "FreeBSD" ]; then
+ return 1
+ fi
+ ;;
+ esac
+ return 0
+}
+
+require()
+{
+ if supported ${1}; then
+ return
+ fi
+ quick_exit
+}
diff --git a/tools/regression/fstest/tests/mkdir/00.t b/tools/regression/fstest/tests/mkdir/00.t
new file mode 100644
index 0000000..d640de9
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/00.t
@@ -0,0 +1,73 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir creates directories"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..36"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n1} 0755
+cdir=`pwd`
+cd ${n1}
+
+# POSIX: The file permission bits of the new directory shall be initialized from
+# mode. These file permission bits of the mode argument shall be modified by the
+# process' file creation mask.
+expect 0 mkdir ${n0} 0755
+expect dir,0755 lstat ${n0} type,mode
+expect 0 rmdir ${n0}
+expect 0 mkdir ${n0} 0151
+expect dir,0151 lstat ${n0} type,mode
+expect 0 rmdir ${n0}
+expect 0 -U 077 mkdir ${n0} 0151
+expect dir,0100 lstat ${n0} type,mode
+expect 0 rmdir ${n0}
+expect 0 -U 070 mkdir ${n0} 0345
+expect dir,0305 lstat ${n0} type,mode
+expect 0 rmdir ${n0}
+expect 0 -U 0501 mkdir ${n0} 0345
+expect dir,0244 lstat ${n0} type,mode
+expect 0 rmdir ${n0}
+
+# POSIX: The directory's user ID shall be set to the process' effective user ID.
+# The directory's group ID shall be set to the group ID of the parent directory
+# or to the effective group ID of the process.
+expect 0 chown . 65535 65535
+expect 0 -u 65535 -g 65535 mkdir ${n0} 0755
+expect 65535,65535 lstat ${n0} uid,gid
+expect 0 rmdir ${n0}
+expect 0 -u 65535 -g 65534 mkdir ${n0} 0755
+expect "65535,6553[45]" lstat ${n0} uid,gid
+expect 0 rmdir ${n0}
+expect 0 chmod . 0777
+expect 0 -u 65534 -g 65533 mkdir ${n0} 0755
+expect "65534,6553[35]" lstat ${n0} uid,gid
+expect 0 rmdir ${n0}
+
+# POSIX: Upon successful completion, mkdir() shall mark for update the st_atime,
+# st_ctime, and st_mtime fields of the directory. Also, the st_ctime and
+# st_mtime fields of the directory that contains the new entry shall be marked
+# for update.
+expect 0 chown . 0 0
+time=`${fstest} stat . ctime`
+sleep 1
+expect 0 mkdir ${n0} 0755
+atime=`${fstest} stat ${n0} atime`
+test_check $time -lt $atime
+mtime=`${fstest} stat ${n0} mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat ${n0} ctime`
+test_check $time -lt $ctime
+mtime=`${fstest} stat . mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat . ctime`
+test_check $time -lt $ctime
+expect 0 rmdir ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n1}
diff --git a/tools/regression/fstest/tests/mkdir/01.t b/tools/regression/fstest/tests/mkdir/01.t
new file mode 100644
index 0000000..43717e6
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/01.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns ENOTDIR if a component of the path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR mkdir ${n0}/${n1}/test 0755
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkdir/02.t b/tools/regression/fstest/tests/mkdir/02.t
new file mode 100644
index 0000000..8a4c47a
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/02.t
@@ -0,0 +1,13 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns ENAMETOOLONG if a component of a pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+expect 0 mkdir ${name255} 0755
+expect 0 rmdir ${name255}
+expect ENAMETOOLONG mkdir ${name256} 0755
diff --git a/tools/regression/fstest/tests/mkdir/03.t b/tools/regression/fstest/tests/mkdir/03.t
new file mode 100644
index 0000000..36213af
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/03.t
@@ -0,0 +1,21 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns ENAMETOOLONG if an entire path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..11"
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 mkdir ${path1023} 0755
+expect 0 rmdir ${path1023}
+expect ENAMETOOLONG mkdir ${path1024} 0755
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/mkdir/04.t b/tools/regression/fstest/tests/mkdir/04.t
new file mode 100644
index 0000000..cd65819
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/04.t
@@ -0,0 +1,16 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns ENOENT if a component of the path prefix does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT mkdir ${n0}/${n1}/test 0755
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkdir/05.t b/tools/regression/fstest/tests/mkdir/05.t
new file mode 100644
index 0000000..7e97d9b
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/05.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns EACCES when search permission is denied for a component of the path prefix"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755
+expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2}
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755
+expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkdir/06.t b/tools/regression/fstest/tests/mkdir/06.t
new file mode 100644
index 0000000..79aa539
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/06.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns EACCES when write permission is denied on the parent directory of the directory to be created"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755
+expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2}
+expect 0 chmod ${n1} 0555
+expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755
+expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkdir/07.t b/tools/regression/fstest/tests/mkdir/07.t
new file mode 100644
index 0000000..dbb00df
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/07.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns ELOOP if too many symbolic links were encountered in translating the pathname"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP mkdir ${n0}/test 0755
+expect ELOOP mkdir ${n1}/test 0755
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/mkdir/08.t b/tools/regression/fstest/tests/mkdir/08.t
new file mode 100644
index 0000000..f87c7bc
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/08.t
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns EPERM if the parent directory of the directory to be created has its immutable flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..30"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} none
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} none
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_APPEND
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_APPEND
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
+
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkdir/09.t b/tools/regression/fstest/tests/mkdir/09.t
new file mode 100644
index 0000000..c36d030
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/09.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns EROFS if the named file resides on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..7"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 mkdir ${n0}/${n1} 0755
+ expect 0 rmdir ${n0}/${n1}
+ mount -ur /dev/md${n}
+ expect EROFS mkdir ${n0}/${n1} 0755
+ mount -uw /dev/md${n}
+ expect 0 mkdir ${n0}/${n1} 0755
+ expect 0 rmdir ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/mkdir/10.t b/tools/regression/fstest/tests/mkdir/10.t
new file mode 100644
index 0000000..217bded
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/10.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns EEXIST if the named file exists"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect EEXIST mkdir ${n0} 0755
+expect 0 rmdir ${n0}
+
+expect 0 create ${n0} 0644
+expect EEXIST mkdir ${n0} 0755
+expect 0 unlink ${n0}
+
+expect 0 symlink test ${n0}
+expect EEXIST mkdir ${n0} 0755
+expect 0 unlink ${n0}
+
+expect 0 mkfifo ${n0} 0644
+expect EEXIST mkdir ${n0} 0755
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/mkdir/11.t b/tools/regression/fstest/tests/mkdir/11.t
new file mode 100644
index 0000000..8b9758b
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/11.t
@@ -0,0 +1,36 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns ENOSPC if there are no free inodes on the file system on which the directory is being created"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..3"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 256k`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ i=0
+ while :; do
+ mkdir ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+ done
+ expect ENOSPC mkdir ${n0}/${n1} 0755
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/mkdir/12.t b/tools/regression/fstest/tests/mkdir/12.t
new file mode 100644
index 0000000..af322c4
--- /dev/null
+++ b/tools/regression/fstest/tests/mkdir/12.t
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkdir returns EFAULT if the path argument points outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..2"
+
+expect EFAULT mkdir NULL 0755
+expect EFAULT mkdir DEADCODE 0755
diff --git a/tools/regression/fstest/tests/mkfifo/00.t b/tools/regression/fstest/tests/mkfifo/00.t
new file mode 100644
index 0000000..eda7b17
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/00.t
@@ -0,0 +1,73 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo creates fifo files"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..36"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n1} 0755
+cdir=`pwd`
+cd ${n1}
+
+# POSIX: The file permission bits of the new FIFO shall be initialized from
+# mode. The file permission bits of the mode argument shall be modified by the
+# process' file creation mask.
+expect 0 mkfifo ${n0} 0755
+expect fifo,0755 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+expect 0 mkfifo ${n0} 0151
+expect fifo,0151 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+expect 0 -U 077 mkfifo ${n0} 0151
+expect fifo,0100 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+expect 0 -U 070 mkfifo ${n0} 0345
+expect fifo,0305 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+expect 0 -U 0501 mkfifo ${n0} 0345
+expect fifo,0244 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+
+# POSIX: The FIFO's user ID shall be set to the process' effective user ID.
+# The FIFO's group ID shall be set to the group ID of the parent directory or to
+# the effective group ID of the process.
+expect 0 chown . 65535 65535
+expect 0 -u 65535 -g 65535 mkfifo ${n0} 0755
+expect 65535,65535 lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+expect 0 -u 65535 -g 65534 mkfifo ${n0} 0755
+expect "65535,6553[45]" lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+expect 0 chmod . 0777
+expect 0 -u 65534 -g 65533 mkfifo ${n0} 0755
+expect "65534,6553[35]" lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+
+# POSIX: Upon successful completion, mkfifo() shall mark for update the
+# st_atime, st_ctime, and st_mtime fields of the file. Also, the st_ctime and
+# st_mtime fields of the directory that contains the new entry shall be marked
+# for update.
+expect 0 chown . 0 0
+time=`${fstest} stat . ctime`
+sleep 1
+expect 0 mkfifo ${n0} 0755
+atime=`${fstest} stat ${n0} atime`
+test_check $time -lt $atime
+mtime=`${fstest} stat ${n0} mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat ${n0} ctime`
+test_check $time -lt $ctime
+mtime=`${fstest} stat . mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat . ctime`
+test_check $time -lt $ctime
+expect 0 unlink ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n1}
diff --git a/tools/regression/fstest/tests/mkfifo/01.t b/tools/regression/fstest/tests/mkfifo/01.t
new file mode 100644
index 0000000..69bfff5
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/01.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns ENOTDIR if a component of the path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR mkfifo ${n0}/${n1}/test 0644
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkfifo/02.t b/tools/regression/fstest/tests/mkfifo/02.t
new file mode 100644
index 0000000..1f3a64e
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/02.t
@@ -0,0 +1,13 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns ENAMETOOLONG if a component of a pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+expect 0 mkfifo ${name255} 0644
+expect 0 unlink ${name255}
+expect ENAMETOOLONG mkfifo ${name256} 0644
diff --git a/tools/regression/fstest/tests/mkfifo/03.t b/tools/regression/fstest/tests/mkfifo/03.t
new file mode 100644
index 0000000..aa48201
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/03.t
@@ -0,0 +1,21 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns ENAMETOOLONG if an entire path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..11"
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 mkfifo ${path1023} 0644
+expect 0 unlink ${path1023}
+expect ENAMETOOLONG mkfifo ${path1024} 0644
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/mkfifo/04.t b/tools/regression/fstest/tests/mkfifo/04.t
new file mode 100644
index 0000000..d9ad951
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/04.t
@@ -0,0 +1,16 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns ENOENT if a component of the path prefix does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT mkfifo ${n0}/${n1}/test 0644
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkfifo/05.t b/tools/regression/fstest/tests/mkfifo/05.t
new file mode 100644
index 0000000..d93d568
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/05.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns EACCES when search permission is denied for a component of the path prefix"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkfifo/06.t b/tools/regression/fstest/tests/mkfifo/06.t
new file mode 100644
index 0000000..47f199b
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/06.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns EACCES when write permission is denied on the parent directory of the file to be created"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 chmod ${n1} 0555
+expect EACCES -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkfifo/07.t b/tools/regression/fstest/tests/mkfifo/07.t
new file mode 100644
index 0000000..44271b6
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/07.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns ELOOP if too many symbolic links were encountered in translating the pathname"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP mkfifo ${n0}/test 0644
+expect ELOOP mkfifo ${n1}/test 0644
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/mkfifo/08.t b/tools/regression/fstest/tests/mkfifo/08.t
new file mode 100644
index 0000000..a4b0002
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/08.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns EROFS if the named file resides on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..7"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 mkfifo ${n0}/${n1} 0644
+ expect 0 unlink ${n0}/${n1}
+ mount -ur /dev/md${n}
+ expect EROFS mkfifo ${n0}/${n1} 0644
+ mount -uw /dev/md${n}
+ expect 0 mkfifo ${n0}/${n1} 0644
+ expect 0 unlink ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/mkfifo/09.t b/tools/regression/fstest/tests/mkfifo/09.t
new file mode 100644
index 0000000..102e12b
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/09.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns EEXIST if the named file exists"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect EEXIST mkfifo ${n0} 0644
+expect 0 rmdir ${n0}
+
+expect 0 create ${n0} 0644
+expect EEXIST mkfifo ${n0} 0644
+expect 0 unlink ${n0}
+
+expect 0 symlink test ${n0}
+expect EEXIST mkfifo ${n0} 0644
+expect 0 unlink ${n0}
+
+expect 0 mkfifo ${n0} 0644
+expect EEXIST mkfifo ${n0} 0644
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/mkfifo/10.t b/tools/regression/fstest/tests/mkfifo/10.t
new file mode 100644
index 0000000..beeacab
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/10.t
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns EPERM if the parent directory of the file to be created has its immutable flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..30"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 mkfifo ${n0}/${n1} 0644
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM mkfifo ${n0}/${n1} 0644
+expect 0 chflags ${n0} none
+expect 0 mkfifo ${n0}/${n1} 0644
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM mkfifo ${n0}/${n1} 0644
+expect 0 chflags ${n0} none
+expect 0 mkfifo ${n0}/${n1} 0644
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_APPEND
+expect 0 mkfifo ${n0}/${n1} 0644
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_APPEND
+expect 0 mkfifo ${n0}/${n1} 0644
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 mkfifo ${n0}/${n1} 0644
+expect 0 unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
+
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 mkfifo ${n0}/${n1} 0644
+expect 0 unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/mkfifo/11.t b/tools/regression/fstest/tests/mkfifo/11.t
new file mode 100644
index 0000000..f9937fa
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/11.t
@@ -0,0 +1,36 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns ENOSPC if there are no free inodes on the file system on which the file is being created"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..3"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 256k`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ i=0
+ while :; do
+ mkfifo ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+ done
+ expect ENOSPC mkfifo ${n0}/${n1} 0644
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/mkfifo/12.t b/tools/regression/fstest/tests/mkfifo/12.t
new file mode 100644
index 0000000..40c1455
--- /dev/null
+++ b/tools/regression/fstest/tests/mkfifo/12.t
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="mkfifo returns EFAULT if the path argument points outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..2"
+
+expect EFAULT mkfifo NULL 0644
+expect EFAULT mkfifo DEADCODE 0644
diff --git a/tools/regression/fstest/tests/open/00.t b/tools/regression/fstest/tests/open/00.t
new file mode 100644
index 0000000..caa24f0
--- /dev/null
+++ b/tools/regression/fstest/tests/open/00.t
@@ -0,0 +1,99 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open opens (and eventually creates) a file"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..47"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n1} 0755
+cdir=`pwd`
+cd ${n1}
+
+# POSIX: (If O_CREAT is specified and the file doesn't exist) [...] the access
+# permission bits of the file mode shall be set to the value of the third
+# argument taken as type mode_t modified as follows: a bitwise AND is performed
+# on the file-mode bits and the corresponding bits in the complement of the
+# process' file mode creation mask. Thus, all bits in the file mode whose
+# corresponding bit in the file mode creation mask is set are cleared.
+expect 0 open ${n0} O_CREAT,O_WRONLY 0755
+expect regular,0755 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+expect 0 open ${n0} O_CREAT,O_WRONLY 0151
+expect regular,0151 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+expect 0 -U 077 open ${n0} O_CREAT,O_WRONLY 0151
+expect regular,0100 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+expect 0 -U 070 open ${n0} O_CREAT,O_WRONLY 0345
+expect regular,0305 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+expect 0 -U 0501 open ${n0} O_CREAT,O_WRONLY 0345
+expect regular,0244 lstat ${n0} type,mode
+expect 0 unlink ${n0}
+
+# POSIX: (If O_CREAT is specified and the file doesn't exist) [...] the user ID
+# of the file shall be set to the effective user ID of the process; the group ID
+# of the file shall be set to the group ID of the file's parent directory or to
+# the effective group ID of the process [...]
+expect 0 chown . 65535 65535
+expect 0 -u 65535 -g 65535 open ${n0} O_CREAT,O_WRONLY 0644
+expect 65535,65535 lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+expect 0 -u 65535 -g 65534 open ${n0} O_CREAT,O_WRONLY 0644
+expect "65535,6553[45]" lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+expect 0 chmod . 0777
+expect 0 -u 65534 -g 65533 open ${n0} O_CREAT,O_WRONLY 0644
+expect "65534,6553[35]" lstat ${n0} uid,gid
+expect 0 unlink ${n0}
+
+# Update parent directory ctime/mtime if file didn't exist.
+expect 0 chown . 0 0
+time=`${fstest} stat . ctime`
+sleep 1
+expect 0 open ${n0} O_CREAT,O_WRONLY 0644
+atime=`${fstest} stat ${n0} atime`
+test_check $time -lt $atime
+mtime=`${fstest} stat ${n0} mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat ${n0} ctime`
+test_check $time -lt $ctime
+mtime=`${fstest} stat . mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat . ctime`
+test_check $time -lt $ctime
+expect 0 unlink ${n0}
+
+# Don't update parent directory ctime/mtime if file existed.
+expect 0 create ${n0} 0644
+dmtime=`${fstest} stat . mtime`
+dctime=`${fstest} stat . ctime`
+sleep 1
+expect 0 open ${n0} O_CREAT,O_RDONLY 0644
+mtime=`${fstest} stat . mtime`
+test_check $dmtime -eq $mtime
+ctime=`${fstest} stat . ctime`
+test_check $dctime -eq $ctime
+expect 0 unlink ${n0}
+
+echo test > ${n0}
+expect 5 stat ${n0} size
+mtime1=`${fstest} stat ${n0} mtime`
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 open ${n0} O_WRONLY,O_TRUNC
+mtime2=`${fstest} stat ${n0} mtime`
+test_check $mtime1 -lt $mtime2
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 stat ${n0} size
+expect 0 unlink ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n1}
diff --git a/tools/regression/fstest/tests/open/01.t b/tools/regression/fstest/tests/open/01.t
new file mode 100644
index 0000000..39446ba
--- /dev/null
+++ b/tools/regression/fstest/tests/open/01.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns ENOTDIR if a component of the path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR open ${n0}/${n1}/test O_CREAT 0644
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/02.t b/tools/regression/fstest/tests/open/02.t
new file mode 100644
index 0000000..ebd47e3
--- /dev/null
+++ b/tools/regression/fstest/tests/open/02.t
@@ -0,0 +1,14 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns ENAMETOOLONG if a component of a pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+expect 0 open ${name255} O_CREAT 0620
+expect 0620 stat ${name255} mode
+expect 0 unlink ${name255}
+expect ENAMETOOLONG open ${name256} O_CREAT 0620
diff --git a/tools/regression/fstest/tests/open/03.t b/tools/regression/fstest/tests/open/03.t
new file mode 100644
index 0000000..ad78e5b
--- /dev/null
+++ b/tools/regression/fstest/tests/open/03.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns ENAMETOOLONG if an entire path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 open ${path1023} O_CREAT 0642
+expect 0642 stat ${path1023} mode
+expect 0 unlink ${path1023}
+expect ENAMETOOLONG open ${path1024} O_CREAT 0642
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/open/04.t b/tools/regression/fstest/tests/open/04.t
new file mode 100644
index 0000000..1ce99cb
--- /dev/null
+++ b/tools/regression/fstest/tests/open/04.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns ENOENT if a component of the path name that must exist does not exist or O_CREAT is not set and the named file does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT open ${n0}/${n1}/test O_CREAT 0644
+expect ENOENT open ${n0}/${n1} O_RDONLY
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/05.t b/tools/regression/fstest/tests/open/05.t
new file mode 100644
index 0000000..25ad7da
--- /dev/null
+++ b/tools/regression/fstest/tests/open/05.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EACCES when search permission is denied for a component of the path prefix"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/06.t b/tools/regression/fstest/tests/open/06.t
new file mode 100644
index 0000000..e72d191
--- /dev/null
+++ b/tools/regression/fstest/tests/open/06.t
@@ -0,0 +1,89 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EACCES when the required permissions (for reading and/or writing) are denied for the given flags"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..65"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 65534 65534
+cdir=`pwd`
+cd ${n0}
+
+expect 0 -u 65534 -g 65534 create ${n1} 0644
+
+expect 0 -u 65534 -g 65534 chmod ${n1} 0600
+expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY
+expect 0 -u 65534 -g 65534 open ${n1} O_WRONLY
+expect 0 -u 65534 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0060
+expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY
+expect 0 -u 65533 -g 65534 open ${n1} O_WRONLY
+expect 0 -u 65533 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0006
+expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY
+expect 0 -u 65533 -g 65533 open ${n1} O_WRONLY
+expect 0 -u 65533 -g 65533 open ${n1} O_RDWR
+
+expect 0 -u 65534 -g 65534 chmod ${n1} 0477
+expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY
+expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0747
+expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY
+expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0774
+expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY
+expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR
+
+expect 0 -u 65534 -g 65534 chmod ${n1} 0277
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY
+expect 0 -u 65534 -g 65534 open ${n1} O_WRONLY
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0727
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY
+expect 0 -u 65533 -g 65534 open ${n1} O_WRONLY
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0772
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY
+expect 0 -u 65533 -g 65533 open ${n1} O_WRONLY
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR
+
+expect 0 -u 65534 -g 65534 chmod ${n1} 0177
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY
+expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0717
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY
+expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0771
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY
+expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR
+
+expect 0 -u 65534 -g 65534 chmod ${n1} 0077
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY
+expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0707
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY
+expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR
+expect 0 -u 65534 -g 65534 chmod ${n1} 0770
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY
+expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR
+
+expect 0 -u 65534 -g 65534 unlink ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/07.t b/tools/regression/fstest/tests/open/07.t
new file mode 100644
index 0000000..a41d193
--- /dev/null
+++ b/tools/regression/fstest/tests/open/07.t
@@ -0,0 +1,45 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EACCES when O_TRUNC is specified and write permission is denied"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..23"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 65534 65534
+cdir=`pwd`
+cd ${n0}
+
+expect 0 -u 65534 -g 65534 create ${n1} 0644
+
+expect 0 -u 65534 -g 65534 chmod ${n1} 0477
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC
+expect 0 -u 65534 -g 65534 chmod ${n1} 0747
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC
+expect 0 -u 65534 -g 65534 chmod ${n1} 0774
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC
+
+expect 0 -u 65534 -g 65534 chmod ${n1} 0177
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC
+expect 0 -u 65534 -g 65534 chmod ${n1} 0717
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC
+expect 0 -u 65534 -g 65534 chmod ${n1} 0771
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC
+
+expect 0 -u 65534 -g 65534 chmod ${n1} 0077
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC
+expect 0 -u 65534 -g 65534 chmod ${n1} 0707
+expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC
+expect 0 -u 65534 -g 65534 chmod ${n1} 0770
+expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC
+
+expect 0 -u 65534 -g 65534 unlink ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/08.t b/tools/regression/fstest/tests/open/08.t
new file mode 100644
index 0000000..22ea29b
--- /dev/null
+++ b/tools/regression/fstest/tests/open/08.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EACCES when O_CREAT is specified, the file does not exist, and the directory in which it is to be created does not permit writing"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_CREAT 0644
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/09.t b/tools/regression/fstest/tests/open/09.t
new file mode 100644
index 0000000..4614a40
--- /dev/null
+++ b/tools/regression/fstest/tests/open/09.t
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="O_CREAT is specified, the file does not exist, and the directory in which it is to be created has its immutable flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..30"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 chflags ${n0} none
+expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 chflags ${n0} none
+expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_APPEND
+expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_APPEND
+expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 symlink test ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/10.t b/tools/regression/fstest/tests/open/10.t
new file mode 100644
index 0000000..d56ceb1
--- /dev/null
+++ b/tools/regression/fstest/tests/open/10.t
@@ -0,0 +1,45 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EPERM when the named file has its immutable flag set and the file is to be modified"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..28"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM open ${n0} O_WRONLY
+expect EPERM open ${n0} O_RDWR
+expect EPERM open ${n0} O_RDONLY,O_TRUNC
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM open ${n0} O_WRONLY
+expect EPERM open ${n0} O_RDWR
+expect EPERM open ${n0} O_RDONLY,O_TRUNC
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 open ${n0} O_WRONLY
+expect 0 open ${n0} O_RDWR
+expect 0 open ${n0} O_RDONLY,O_TRUNC
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 open ${n0} O_WRONLY
+expect 0 open ${n0} O_RDWR
+expect 0 open ${n0} O_RDONLY,O_TRUNC
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/open/11.t b/tools/regression/fstest/tests/open/11.t
new file mode 100644
index 0000000..feb0ffe
--- /dev/null
+++ b/tools/regression/fstest/tests/open/11.t
@@ -0,0 +1,39 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EPERM when the named file has its append-only flag set, the file is to be modified, and O_TRUNC is specified or O_APPEND is not specified"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..24"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_APPEND
+expect 0 open ${n0} O_WRONLY,O_APPEND
+expect 0 open ${n0} O_RDWR,O_APPEND
+expect EPERM open ${n0} O_WRONLY
+expect EPERM open ${n0} O_RDWR
+expect EPERM open ${n0} O_RDONLY,O_TRUNC
+expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC
+expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC
+expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_APPEND
+expect 0 open ${n0} O_WRONLY,O_APPEND
+expect 0 open ${n0} O_RDWR,O_APPEND
+expect EPERM open ${n0} O_WRONLY
+expect EPERM open ${n0} O_RDWR
+expect EPERM open ${n0} O_RDONLY,O_TRUNC
+expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC
+expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC
+expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/open/12.t b/tools/regression/fstest/tests/open/12.t
new file mode 100644
index 0000000..2726dc1
--- /dev/null
+++ b/tools/regression/fstest/tests/open/12.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns ELOOP if too many symbolic links were encountered in translating the pathname"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP open ${n0}/test O_RDONLY
+expect ELOOP open ${n1}/test O_RDONLY
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/open/13.t b/tools/regression/fstest/tests/open/13.t
new file mode 100644
index 0000000..4d05a61
--- /dev/null
+++ b/tools/regression/fstest/tests/open/13.t
@@ -0,0 +1,24 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EISDIR when he named file is a directory, and the arguments specify it is to be modified"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..8"
+
+n0=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 open ${n0} O_RDONLY
+expect EISDIR open ${n0} O_WRONLY
+expect EISDIR open ${n0} O_RDWR
+expect EISDIR open ${n0} O_RDONLY,O_TRUNC
+expect EISDIR open ${n0} O_WRONLY,O_TRUNC
+expect EISDIR open ${n0} O_RDWR,O_TRUNC
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/open/14.t b/tools/regression/fstest/tests/open/14.t
new file mode 100644
index 0000000..771f451
--- /dev/null
+++ b/tools/regression/fstest/tests/open/14.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EROFS if the named file resides on a read-only file system, and the file is to be modified"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..10"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ expect 0 open ${n0}/${n1} O_WRONLY
+ expect 0 open ${n0}/${n1} O_RDWR
+ expect 0 open ${n0}/${n1} O_RDONLY,O_TRUNC
+ mount -ur /dev/md${n}
+ expect EROFS open ${n0}/${n1} O_WRONLY
+ expect EROFS open ${n0}/${n1} O_RDWR
+ expect EROFS open ${n0}/${n1} O_RDONLY,O_TRUNC
+ mount -uw /dev/md${n}
+ expect 0 unlink ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/open/15.t b/tools/regression/fstest/tests/open/15.t
new file mode 100644
index 0000000..76b57d3
--- /dev/null
+++ b/tools/regression/fstest/tests/open/15.t
@@ -0,0 +1,32 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EROFS when O_CREAT is specified and the named file would reside on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..5"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+ expect 0 unlink ${n0}/${n1}
+ mount -ur /dev/md${n}
+ expect EROFS open ${n0}/${n1} O_RDONLY,O_CREAT 0644
+ mount -uw /dev/md${n}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/open/16.t b/tools/regression/fstest/tests/open/16.t
new file mode 100644
index 0000000..7b4194e
--- /dev/null
+++ b/tools/regression/fstest/tests/open/16.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EMLINK when O_NOFOLLOW was specified and the target is a symbolic link"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect EMLINK open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644
+expect EMLINK open ${n1} O_RDONLY,O_NOFOLLOW
+expect EMLINK open ${n1} O_WRONLY,O_NOFOLLOW
+expect EMLINK open ${n1} O_RDWR,O_NOFOLLOW
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/open/17.t b/tools/regression/fstest/tests/open/17.t
new file mode 100644
index 0000000..2224daf
--- /dev/null
+++ b/tools/regression/fstest/tests/open/17.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns ENXIO when O_NONBLOCK is set, the named file is a fifo, O_WRONLY is set, and no process has the file open for reading"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+n0=`namegen`
+
+expect 0 mkfifo ${n0} 0644
+expect ENXIO open ${n0} O_WRONLY,O_NONBLOCK
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/open/18.t b/tools/regression/fstest/tests/open/18.t
new file mode 100644
index 0000000..e14fc4b
--- /dev/null
+++ b/tools/regression/fstest/tests/open/18.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EWOULDBLOCK when O_NONBLOCK and one of O_SHLOCK or O_EXLOCK is specified and the file is locked"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
+expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
+expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
+expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/open/19.t b/tools/regression/fstest/tests/open/19.t
new file mode 100644
index 0000000..aa2d909
--- /dev/null
+++ b/tools/regression/fstest/tests/open/19.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns ENOSPC when O_CREAT is specified, the file does not exist, and there are no free inodes on the file system on which the file is being created"
+
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..3"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 256k`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ i=0
+ while :; do
+ touch ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+ done
+ expect ENOSPC open ${n0}/${i} O_RDONLY,O_CREAT 0644
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/open/20.t b/tools/regression/fstest/tests/open/20.t
new file mode 100644
index 0000000..fc926f4
--- /dev/null
+++ b/tools/regression/fstest/tests/open/20.t
@@ -0,0 +1,25 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns ETXTBSY when the file is a pure procedure (shared text) file that is being executed and the open() system call requests write access"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}" in
+FreeBSD)
+ echo "1..4"
+
+ n0=`namegen`
+
+ cp -pf `which sleep` ${n0}
+ ./${n0} 3 &
+ expect ETXTBSY open ${n0} O_WRONLY
+ expect ETXTBSY open ${n0} O_RDWR
+ expect ETXTBSY open ${n0} O_RDONLY,O_TRUNC
+ expect 0 unlink ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/open/21.t b/tools/regression/fstest/tests/open/21.t
new file mode 100644
index 0000000..c43d7fd
--- /dev/null
+++ b/tools/regression/fstest/tests/open/21.t
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EFAULT if the path argument points outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..2"
+
+expect EFAULT open NULL O_RDONLY
+expect EFAULT open DEADCODE O_RDONLY
diff --git a/tools/regression/fstest/tests/open/22.t b/tools/regression/fstest/tests/open/22.t
new file mode 100644
index 0000000..5e3d228
--- /dev/null
+++ b/tools/regression/fstest/tests/open/22.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EEXIST when O_CREAT and O_EXCL were specified and the file exists"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect EEXIST open ${n0} O_CREAT,O_EXCL 0644
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect EEXIST open ${n0} O_CREAT,O_EXCL 0644
+expect 0 rmdir ${n0}
+
+expect 0 mkfifo ${n0} 0644
+expect EEXIST open ${n0} O_CREAT,O_EXCL 0644
+expect 0 unlink ${n0}
+
+expect 0 symlink test ${n0}
+expect EEXIST open ${n0} O_CREAT,O_EXCL 0644
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/open/23.t b/tools/regression/fstest/tests/open/23.t
new file mode 100644
index 0000000..ea6335f
--- /dev/null
+++ b/tools/regression/fstest/tests/open/23.t
@@ -0,0 +1,16 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="open returns EINVAL when an attempt was made to open a descriptor with an illegal combination of O_RDONLY, O_WRONLY, and O_RDWR"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect EINVAL open ${n0} O_WRONLY,O_RDWR
+expect EINVAL open ${n0} O_RDONLY,O_WRONLY,O_RDWR
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/rename/00.t b/tools/regression/fstest/tests/rename/00.t
new file mode 100644
index 0000000..db1feab
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/00.t
@@ -0,0 +1,141 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename changes file name"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..79"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+n3=`namegen`
+
+expect 0 mkdir ${n3} 0755
+cdir=`pwd`
+cd ${n3}
+
+expect 0 create ${n0} 0644
+expect regular,0644,1 lstat ${n0} type,mode,nlink
+inode=`${fstest} lstat ${n0} inode`
+expect 0 rename ${n0} ${n1}
+expect ENOENT lstat ${n0} type,mode,nlink
+expect regular,${inode},0644,1 lstat ${n1} type,inode,mode,nlink
+expect 0 link ${n1} ${n0}
+expect regular,${inode},0644,2 lstat ${n0} type,inode,mode,nlink
+expect regular,${inode},0644,2 lstat ${n1} type,inode,mode,nlink
+expect 0 rename ${n1} ${n2}
+expect regular,${inode},0644,2 lstat ${n0} type,inode,mode,nlink
+expect ENOENT lstat ${n1} type,mode,nlink
+expect regular,${inode},0644,2 lstat ${n2} type,inode,mode,nlink
+expect 0 unlink ${n0}
+expect 0 unlink ${n2}
+
+expect 0 mkdir ${n0} 0755
+expect dir,0755 lstat ${n0} type,mode
+inode=`${fstest} lstat ${n0} inode`
+expect 0 rename ${n0} ${n1}
+expect ENOENT lstat ${n0} type,mode
+expect dir,${inode},0755 lstat ${n1} type,inode,mode
+expect 0 rmdir ${n1}
+
+expect 0 mkfifo ${n0} 0644
+expect fifo,0644,1 lstat ${n0} type,mode,nlink
+inode=`${fstest} lstat ${n0} inode`
+expect 0 rename ${n0} ${n1}
+expect ENOENT lstat ${n0} type,mode,nlink
+expect fifo,${inode},0644,1 lstat ${n1} type,inode,mode,nlink
+expect 0 link ${n1} ${n0}
+expect fifo,${inode},0644,2 lstat ${n0} type,inode,mode,nlink
+expect fifo,${inode},0644,2 lstat ${n1} type,inode,mode,nlink
+expect 0 rename ${n1} ${n2}
+expect fifo,${inode},0644,2 lstat ${n0} type,inode,mode,nlink
+expect ENOENT lstat ${n1} type,mode,nlink
+expect fifo,${inode},0644,2 lstat ${n2} type,inode,mode,nlink
+expect 0 unlink ${n0}
+expect 0 unlink ${n2}
+
+expect 0 create ${n0} 0644
+rinode=`${fstest} lstat ${n0} inode`
+expect regular,0644 lstat ${n0} type,mode
+expect 0 symlink ${n0} ${n1}
+sinode=`${fstest} lstat ${n1} inode`
+expect regular,${rinode},0644 stat ${n1} type,inode,mode
+expect symlink,${sinode} lstat ${n1} type,inode
+expect 0 rename ${n1} ${n2}
+expect regular,${rinode},0644 stat ${n0} type,inode,mode
+expect ENOENT lstat ${n1} type,mode
+expect symlink,${sinode} lstat ${n2} type,inode
+expect 0 unlink ${n0}
+expect 0 unlink ${n2}
+
+# successful rename(2) updates ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 rename ${n0} ${n1}
+ctime2=`${fstest} stat ${n1} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n0} 0755
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 rename ${n0} ${n1}
+ctime2=`${fstest} stat ${n1} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 rmdir ${n1}
+
+expect 0 mkfifo ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 rename ${n0} ${n1}
+ctime2=`${fstest} stat ${n1} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n1}
+
+expect 0 symlink ${n2} ${n0}
+ctime1=`${fstest} lstat ${n0} ctime`
+sleep 1
+expect 0 rename ${n0} ${n1}
+ctime2=`${fstest} lstat ${n1} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n1}
+
+# unsuccessful link(2) does not update ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EACCES -u 65534 rename ${n0} ${n1}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EACCES -u 65534 rename ${n0} ${n1}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 rmdir ${n0}
+
+expect 0 mkfifo ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EACCES -u 65534 rename ${n0} ${n1}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+expect 0 symlink ${n2} ${n0}
+ctime1=`${fstest} lstat ${n0} ctime`
+sleep 1
+expect EACCES -u 65534 rename ${n0} ${n1}
+ctime2=`${fstest} lstat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n3}
diff --git a/tools/regression/fstest/tests/rename/01.t b/tools/regression/fstest/tests/rename/01.t
new file mode 100644
index 0000000..7749b90
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/01.t
@@ -0,0 +1,21 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns ENAMETOOLONG if a component of either pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..8"
+
+n0=`namegen`
+
+expect 0 create ${name255} 0644
+expect 0 rename ${name255} ${n0}
+expect 0 rename ${n0} ${name255}
+expect 0 unlink ${name255}
+
+expect 0 create ${n0} 0644
+expect ENAMETOOLONG rename ${n0} ${name256}
+expect 0 unlink ${n0}
+expect ENAMETOOLONG rename ${name256} ${n0}
diff --git a/tools/regression/fstest/tests/rename/02.t b/tools/regression/fstest/tests/rename/02.t
new file mode 100644
index 0000000..cbe2622
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/02.t
@@ -0,0 +1,26 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns ENAMETOOLONG if an entire length of either path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..14"
+
+n0=`namegen`
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 create ${n0} 0644
+expect 0 rename ${n0} ${path1023}
+expect 0 rename ${path1023} ${n0}
+expect ENAMETOOLONG rename ${n0} ${path1024}
+expect 0 unlink ${n0}
+expect ENAMETOOLONG rename ${path1024} ${n0}
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/rename/03.t b/tools/regression/fstest/tests/rename/03.t
new file mode 100644
index 0000000..8404dbe
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/03.t
@@ -0,0 +1,20 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns ENOENT if a component of the 'from' path does not exist, or a path prefix of 'to' does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT rename ${n0}/${n1}/test ${n2}
+expect 0 create ${n2} 0644
+expect ENOENT rename ${n2} ${n0}/${n1}/test
+expect 0 unlink ${n2}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/04.t b/tools/regression/fstest/tests/rename/04.t
new file mode 100644
index 0000000..af3801f
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/04.t
@@ -0,0 +1,43 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EACCES when a component of either path prefix denies search permission"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..18"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+n3=`namegen`
+n4=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 mkdir ${n2} 0755
+expect 0 chown ${n2} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644
+
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4}
+expect 0 -u 65534 -g 65534 rename ${n2}/${n4} ${n1}/${n3}
+
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n1}/${n4}
+expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4}
+
+expect 0 chmod ${n1} 0755
+expect 0 chmod ${n2} 0644
+expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4}
+
+expect 0 unlink ${n1}/${n3}
+expect 0 rmdir ${n1}
+expect 0 rmdir ${n2}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/05.t b/tools/regression/fstest/tests/rename/05.t
new file mode 100644
index 0000000..39aa28f
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/05.t
@@ -0,0 +1,41 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EACCES when the requested link requires writing in a directory with a mode that denies write permission"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..17"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+n3=`namegen`
+n4=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 mkdir ${n2} 0755
+expect 0 chown ${n2} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644
+
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4}
+expect 0 -u 65534 -g 65534 rename ${n2}/${n4} ${n1}/${n3}
+
+expect 0 chmod ${n2} 0555
+expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4}
+expect 0 chmod ${n1} 0555
+expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n1}/${n4}
+expect 0 chmod ${n1} 0755
+
+expect 0 unlink ${n1}/${n3}
+expect 0 rmdir ${n1}
+expect 0 rmdir ${n2}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/06.t b/tools/regression/fstest/tests/rename/06.t
new file mode 100644
index 0000000..880c604
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/06.t
@@ -0,0 +1,50 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EPERM if the file pointed at by the 'from' argument has its immutable, undeletable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..84"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 create ${n0} 0644
+for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n0} ${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n0} ${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}
+
+expect 0 mkfifo ${n0} 0644
+for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n0} ${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 symlink ${n1} ${n0}
+for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 lchflags ${n0} ${flag}
+ expect ${flag} lstat ${n0} flags
+ expect EPERM rename ${n0} ${n1}
+done
+expect 0 lchflags ${n0} none
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/rename/07.t b/tools/regression/fstest/tests/rename/07.t
new file mode 100644
index 0000000..40d0476
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/07.t
@@ -0,0 +1,95 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EPERM if the parent directory of the file pointed at by the 'from' argument has its immutable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..106"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 create ${n0}/${n1} 0644
+for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n0}/${n1} ${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 mkdir ${n0}/${n1} 0755
+for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n0}/${n1} ${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 mkfifo ${n0}/${n1} 0644
+for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n0}/${n1} ${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 symlink ${n2} ${n0}/${n1}
+for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n0}/${n1} ${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 create ${n0}/${n1} 0644
+for flag in SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n0}/${n1} ${n2}
+ expect 0 rename ${n2} ${n0}/${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 mkdir ${n0}/${n1} 0755
+for flag in SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n0}/${n1} ${n2}
+ expect 0 rename ${n2} ${n0}/${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 mkfifo ${n0}/${n1} 0644
+for flag in SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n0}/${n1} ${n2}
+ expect 0 rename ${n2} ${n0}/${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 symlink ${n2} ${n0}/${n1}
+for flag in SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n0}/${n1} ${n2}
+ expect 0 rename ${n2} ${n0}/${n1}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/08.t b/tools/regression/fstest/tests/rename/08.t
new file mode 100644
index 0000000..962eea1
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/08.t
@@ -0,0 +1,95 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..126"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 create ${n1} 0644
+for flag in SF_IMMUTABLE UF_IMMUTABLE; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n1} ${n0}/${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n1} 0755
+for flag in SF_IMMUTABLE UF_IMMUTABLE; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n1} ${n0}/${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n1}
+
+expect 0 mkfifo ${n1} 0644
+for flag in SF_IMMUTABLE UF_IMMUTABLE; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n1} ${n0}/${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n1}
+
+expect 0 symlink ${n2} ${n1}
+for flag in SF_IMMUTABLE UF_IMMUTABLE; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect EPERM rename ${n1} ${n0}/${n2}
+done
+expect 0 chflags ${n0} none
+expect 0 unlink ${n1}
+
+expect 0 create ${n1} 0644
+for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n1} ${n0}/${n2}
+ expect 0 chflags ${n0} none
+ expect 0 rename ${n0}/${n2} ${n1}
+done
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n1} 0755
+for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n1} ${n0}/${n2}
+ expect 0 chflags ${n0} none
+ expect 0 rename ${n0}/${n2} ${n1}
+done
+expect 0 rmdir ${n1}
+
+expect 0 mkfifo ${n1} 0644
+for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n1} ${n0}/${n2}
+ expect 0 chflags ${n0} none
+ expect 0 rename ${n0}/${n2} ${n1}
+done
+expect 0 unlink ${n1}
+
+expect 0 symlink ${n2} ${n1}
+for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do
+ expect 0 chflags ${n0} ${flag}
+ expect ${flag} stat ${n0} flags
+ expect 0 rename ${n1} ${n0}/${n2}
+ expect 0 chflags ${n0} none
+ expect 0 rename ${n0}/${n2} ${n1}
+done
+expect 0 unlink ${n1}
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/09.t b/tools/regression/fstest/tests/rename/09.t
new file mode 100644
index 0000000..41270f1
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/09.t
@@ -0,0 +1,94 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EACCES or EPERM if the directory containing 'from' is marked sticky, and neither the containing directory nor 'from' are owned by the effective user ID"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..56"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+n3=`namegen`
+n4=`namegen`
+
+expect 0 mkdir ${n4} 0755
+cdir=`pwd`
+cd ${n4}
+
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 65534 65534
+expect 0 chmod ${n0} 01777
+
+expect 0 mkdir ${n1} 0755
+
+# User owns both: the sticky directory and the file to be renamed.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n1}/${n3}
+# User owns the file to be renamed, but doesn't own the sticky directory.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65533 -g 65533 create ${n0}/${n2} 0644
+expect 0 -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n1}/${n3}
+# User owns the sticky directory, but doesn't own the file to be renamed.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65533 -g 65533 create ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n1}/${n3}
+# User doesn't own the sticky directory nor the file to be renamed.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+expect "EACCES|EPERM" -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n0}/${n2}
+
+# User owns both: the sticky directory and the fifo to be renamed.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n1}/${n3}
+# User owns the fifo to be renamed, but doesn't own the sticky directory.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n2} 0644
+expect 0 -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n1}/${n3}
+# User owns the sticky directory, but doesn't own the fifo to be renamed.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n1}/${n3}
+# User doesn't own the sticky directory nor the fifo to be renamed.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
+expect "EACCES|EPERM" -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n0}/${n2}
+
+# User owns both: the sticky directory and the symlink to be renamed.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n1}/${n3}
+# User owns the symlink to be renamed, but doesn't own the sticky directory.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65533 -g 65533 symlink test ${n0}/${n2}
+expect 0 -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n1}/${n3}
+# User owns the sticky directory, but doesn't own the symlink to be renamed.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65533 -g 65533 symlink test ${n0}/${n2}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n1}/${n3}
+# User doesn't own the sticky directory nor the symlink to be renamed.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2}
+expect "EACCES|EPERM" -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 unlink ${n0}/${n2}
+
+expect 0 rmdir ${n1}
+expect 0 rmdir ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n4}
diff --git a/tools/regression/fstest/tests/rename/10.t b/tools/regression/fstest/tests/rename/10.t
new file mode 100644
index 0000000..6d5e831
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/10.t
@@ -0,0 +1,243 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EACCES or EPERM if the file pointed at by the 'to' argument exists, the directory containing 'to' is marked sticky, and neither the containing directory nor 'to' are owned by the effective user ID"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..188"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+n3=`namegen`
+n4=`namegen`
+
+expect 0 mkdir ${n4} 0755
+cdir=`pwd`
+cd ${n4}
+
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 65534 65534
+
+expect 0 mkdir ${n1} 0755
+expect 0 chmod ${n1} 01777
+
+# User owns both: the sticky directory and the destination file.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+inode=`${fstest} lstat ${n0}/${n2} inode`
+expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+expect ${inode} lstat ${n0}/${n2} inode
+expect ENOENT lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n1}/${n3}
+# User owns the sticky directory, but doesn't own the destination file.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+inode=`${fstest} lstat ${n0}/${n2} inode`
+expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} type
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+expect ${inode} lstat ${n0}/${n2} inode
+expect ENOENT lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n1}/${n3}
+# User owns the destination file, but doesn't own the sticky directory.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+inode=`${fstest} lstat ${n0}/${n2} inode`
+expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} type
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+expect ${inode} lstat ${n0}/${n2} inode
+expect ENOENT lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n1}/${n3}
+# User doesn't own the sticky directory nor the destination file.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+expect 0 -u 65533 -g 65533 create ${n1}/${n3} 0644
+inode=`${fstest} lstat ${n1}/${n3} inode`
+expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n0}/${n2}
+expect 0 unlink ${n1}/${n3}
+
+# User owns both: the sticky directory and the destination file.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755
+expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} type
+expect 0 rmdir ${n1}/${n3}
+# User owns the sticky directory, but doesn't own the destination file.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755
+expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} type
+expect 0 rmdir ${n1}/${n3}
+# User owns the destination file, but doesn't own the sticky directory.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755
+expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} type
+expect 0 rmdir ${n1}/${n3}
+# User doesn't own the sticky directory nor the destination file.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755
+expect 0 -u 65533 -g 65533 mkdir ${n1}/${n3} 0755
+expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect 0 rmdir ${n0}/${n2}
+expect 0 rmdir ${n1}/${n3}
+
+# User owns both: the sticky directory and the destination file.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
+inode=`${fstest} lstat ${n0}/${n2} inode`
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+expect ${inode} lstat ${n0}/${n2} inode
+expect ENOENT lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n1}/${n3}
+# User owns the sticky directory, but doesn't own the destination file.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
+inode=`${fstest} lstat ${n0}/${n2} inode`
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} type
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+expect ${inode} lstat ${n0}/${n2} inode
+expect ENOENT lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n1}/${n3}
+# User owns the destination file, but doesn't own the sticky directory.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
+inode=`${fstest} lstat ${n0}/${n2} inode`
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} type
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+expect ${inode} lstat ${n0}/${n2} inode
+expect ENOENT lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n1}/${n3}
+# User doesn't own the sticky directory nor the destination file.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
+expect 0 -u 65533 -g 65533 mkfifo ${n1}/${n3} 0644
+inode=`${fstest} lstat ${n1}/${n3} inode`
+expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n0}/${n2}
+expect 0 unlink ${n1}/${n3}
+
+# User owns both: the sticky directory and the destination file.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2}
+inode=`${fstest} lstat ${n0}/${n2} inode`
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+expect ${inode} lstat ${n0}/${n2} inode
+expect ENOENT lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n1}/${n3}
+# User owns the sticky directory, but doesn't own the destination file.
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2}
+inode=`${fstest} lstat ${n0}/${n2} inode`
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} type
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+expect ${inode} lstat ${n0}/${n2} inode
+expect ENOENT lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n1}/${n3}
+# User owns the destination file, but doesn't own the sticky directory.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2}
+inode=`${fstest} lstat ${n0}/${n2} inode`
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} type
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
+expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+expect ${inode} lstat ${n0}/${n2} inode
+expect ENOENT lstat ${n1}/${n3} inode
+expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644
+expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ENOENT lstat ${n0}/${n2} inode
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n1}/${n3}
+# User doesn't own the sticky directory nor the destination file.
+expect 0 chown ${n1} 65533 65533
+expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2}
+expect 0 -u 65533 -g 65533 symlink test ${n1}/${n3}
+inode=`${fstest} lstat ${n1}/${n3} inode`
+expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+expect ${inode} lstat ${n1}/${n3} inode
+expect 0 unlink ${n0}/${n2}
+expect 0 unlink ${n1}/${n3}
+
+expect 0 rmdir ${n1}
+expect 0 rmdir ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n4}
diff --git a/tools/regression/fstest/tests/rename/11.t b/tools/regression/fstest/tests/rename/11.t
new file mode 100644
index 0000000..6120e64
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/11.t
@@ -0,0 +1,24 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns ELOOP if too many symbolic links were encountered in translating one of the pathnames"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..10"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP rename ${n0}/test ${n2}
+expect ELOOP rename ${n1}/test ${n2}
+expect 0 create ${n2} 0644
+expect ELOOP rename ${n2} ${n0}/test
+expect ELOOP rename ${n2} ${n1}/test
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
+expect 0 unlink ${n2}
diff --git a/tools/regression/fstest/tests/rename/12.t b/tools/regression/fstest/tests/rename/12.t
new file mode 100644
index 0000000..504980c
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/12.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns ENOTDIR if a component of either path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..8"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR rename ${n0}/${n1}/test ${n0}/${n2}
+expect 0 create ${n0}/${n2} 0644
+expect ENOTDIR link ${n0}/${n2} ${n0}/${n1}/test
+expect 0 unlink ${n0}/${n1}
+expect 0 unlink ${n0}/${n2}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/13.t b/tools/regression/fstest/tests/rename/13.t
new file mode 100644
index 0000000..5697311
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/13.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns ENOTDIR when the 'from' argument is a directory, but 'to' is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..17"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 create ${n1} 0644
+expect ENOTDIR rename ${n0} ${n1}
+expect dir lstat ${n0} type
+expect regular lstat ${n1} type
+expect 0 unlink ${n1}
+
+expect 0 mkfifo ${n1} 0644
+expect ENOTDIR rename ${n0} ${n1}
+expect dir lstat ${n0} type
+expect fifo lstat ${n1} type
+expect 0 unlink ${n1}
+
+expect 0 symlink test ${n1}
+expect ENOTDIR rename ${n0} ${n1}
+expect dir lstat ${n0} type
+expect symlink lstat ${n1} type
+expect 0 unlink ${n1}
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/14.t b/tools/regression/fstest/tests/rename/14.t
new file mode 100644
index 0000000..806e09d
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/14.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EISDIR when the 'to' argument is a directory, but 'from' is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..17"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 create ${n1} 0644
+expect EISDIR rename ${n1} ${n0}
+expect dir lstat ${n0} type
+expect regular lstat ${n1} type
+expect 0 unlink ${n1}
+
+expect 0 mkfifo ${n1} 0644
+expect EISDIR rename ${n1} ${n0}
+expect dir lstat ${n0} type
+expect fifo lstat ${n1} type
+expect 0 unlink ${n1}
+
+expect 0 symlink test ${n1}
+expect EISDIR rename ${n1} ${n0}
+expect dir lstat ${n0} type
+expect symlink lstat ${n1} type
+expect 0 unlink ${n1}
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/15.t b/tools/regression/fstest/tests/rename/15.t
new file mode 100644
index 0000000..0ef6cc3
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/15.t
@@ -0,0 +1,45 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EXDEV if the link named by 'to' and the file named by 'from' are on different file systems"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}" in
+FreeBSD)
+ echo "1..14"
+
+ n0=`namegen`
+ n1=`namegen`
+ n2=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+
+ expect 0 create ${n0}/${n1} 0644
+ expect EXDEV rename ${n0}/${n1} ${n2}
+ expect 0 unlink ${n0}/${n1}
+
+ expect 0 mkdir ${n0}/${n1} 0755
+ expect EXDEV rename ${n0}/${n1} ${n2}
+ expect 0 rmdir ${n0}/${n1}
+
+ expect 0 mkfifo ${n0}/${n1} 0644
+ expect EXDEV rename ${n0}/${n1} ${n2}
+ expect 0 unlink ${n0}/${n1}
+
+ expect 0 symlink test ${n0}/${n1}
+ expect EXDEV rename ${n0}/${n1} ${n2}
+ expect 0 unlink ${n0}/${n1}
+
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/rename/16.t b/tools/regression/fstest/tests/rename/16.t
new file mode 100644
index 0000000..cda8e99
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/16.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EROFS if the requested link requires writing in a directory on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}" in
+FreeBSD)
+ echo "1..8"
+
+ n0=`namegen`
+ n1=`namegen`
+ n2=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ mount -ur /dev/md${n}
+
+ expect EROFS rename ${n0}/${n1} ${n0}/${n2}
+ expect EROFS rename ${n0}/${n1} ${n2}
+ expect 0 create ${n2} 0644
+ expect EROFS rename ${n2} ${n0}/${n2}
+ expect 0 unlink ${n2}
+
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/rename/17.t b/tools/regression/fstest/tests/rename/17.t
new file mode 100644
index 0000000..a391349
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/17.t
@@ -0,0 +1,20 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EFAULT if one of the pathnames specified is outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..8"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect EFAULT rename ${n0} NULL
+expect EFAULT rename ${n0} DEADCODE
+expect 0 unlink ${n0}
+expect EFAULT rename NULL ${n0}
+expect EFAULT rename DEADCODE ${n0}
+expect EFAULT rename NULL DEADCODE
+expect EFAULT rename DEADCODE NULL
diff --git a/tools/regression/fstest/tests/rename/18.t b/tools/regression/fstest/tests/rename/18.t
new file mode 100644
index 0000000..a69913b
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/18.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EINVAL when the 'from' argument is a parent directory of 'to'"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 mkdir ${n0}/${n1} 0755
+
+expect EINVAL rename ${n0} ${n0}/${n1}
+expect EINVAL rename ${n0} ${n0}/${n1}/${n2}
+
+expect 0 rmdir ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/19.t b/tools/regression/fstest/tests/rename/19.t
new file mode 100644
index 0000000..b068a01
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/19.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EINVAL when an attempt is made to rename '.' or '..'"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 mkdir ${n0}/${n1} 0755
+
+expect EINVAL rename ${n0}/${n1}/. ${n2}
+expect EINVAL rename ${n0}/${n1}/.. ${n2}
+
+expect 0 rmdir ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rename/20.t b/tools/regression/fstest/tests/rename/20.t
new file mode 100644
index 0000000..8a00d1f
--- /dev/null
+++ b/tools/regression/fstest/tests/rename/20.t
@@ -0,0 +1,35 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rename returns EEXIST or ENOTEMPTY if the 'to' argument is a directory and is not empty"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..16"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 mkdir ${n1} 0755
+
+expect 0 create ${n1}/${n2} 0644
+expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1}
+expect 0 unlink ${n1}/${n2}
+
+expect 0 mkdir ${n1}/${n2} 0755
+expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1}
+expect 0 rmdir ${n1}/${n2}
+
+expect 0 mkfifo ${n1}/${n2} 0644
+expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1}
+expect 0 unlink ${n1}/${n2}
+
+expect 0 symlink test ${n1}/${n2}
+expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1}
+expect 0 unlink ${n1}/${n2}
+
+expect 0 rmdir ${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/00.t b/tools/regression/fstest/tests/rmdir/00.t
new file mode 100644
index 0000000..4381e66
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/00.t
@@ -0,0 +1,28 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir removes directories"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..10"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect dir lstat ${n0} type
+expect 0 rmdir ${n0}
+expect ENOENT lstat ${n0} type
+
+expect 0 mkdir ${n0} 0755
+expect 0 mkdir ${n0}/${n1} 0755
+time=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 rmdir ${n0}/${n1}
+mtime=`${fstest} stat ${n0} mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat ${n0} ctime`
+test_check $time -lt $ctime
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/01.t b/tools/regression/fstest/tests/rmdir/01.t
new file mode 100644
index 0000000..d2d407d
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/01.t
@@ -0,0 +1,30 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns ENOTDIR if a component of the path is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..14"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR rmdir ${n0}/${n1}/test
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
+
+expect 0 create ${n0} 0644
+expect ENOTDIR rmdir ${n0}
+expect 0 unlink ${n0}
+
+expect 0 symlink ${n1} ${n0}
+expect ENOTDIR rmdir ${n0}
+expect 0 unlink ${n0}
+
+expect 0 mkfifo ${n0} 0644
+expect ENOTDIR rmdir ${n0}
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/02.t b/tools/regression/fstest/tests/rmdir/02.t
new file mode 100644
index 0000000..dba59ae
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/02.t
@@ -0,0 +1,14 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns ENAMETOOLONG if a component of a pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+expect 0 mkdir ${name255} 0755
+expect 0 rmdir ${name255}
+expect ENOENT rmdir ${name255}
+expect ENAMETOOLONG rmdir ${name256}
diff --git a/tools/regression/fstest/tests/rmdir/03.t b/tools/regression/fstest/tests/rmdir/03.t
new file mode 100644
index 0000000..1f70eca
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/03.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns ENAMETOOLONG if an entire path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 mkdir ${path1023} 0755
+expect 0 rmdir ${path1023}
+expect ENOENT rmdir ${path1023}
+expect ENAMETOOLONG rmdir ${path1024}
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/rmdir/04.t b/tools/regression/fstest/tests/rmdir/04.t
new file mode 100644
index 0000000..77e1d30
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/04.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns ENOENT if the named directory does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 rmdir ${n0}
+expect ENOENT rmdir ${n0}
+expect ENOENT rmdir ${n1}
diff --git a/tools/regression/fstest/tests/rmdir/05.t b/tools/regression/fstest/tests/rmdir/05.t
new file mode 100644
index 0000000..fd973a9
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/05.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns ELOOP if too many symbolic links were encountered in translating the pathname"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP rmdir ${n0}/test
+expect ELOOP rmdir ${n1}/test
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/rmdir/06.t b/tools/regression/fstest/tests/rmdir/06.t
new file mode 100644
index 0000000..dbb378b
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/06.t
@@ -0,0 +1,36 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EEXIST or ENOTEMPTY the named directory contains files other than '.' and '..' in it"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..20"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 mkdir ${n0}/${n1} 0755
+expect "EEXIST|ENOTEMPTY" rmdir ${n0}
+expect 0 rmdir ${n0}/${n1}
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect "EEXIST|ENOTEMPTY" rmdir ${n0}
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 symlink test ${n0}/${n1}
+expect "EEXIST|ENOTEMPTY" rmdir ${n0}
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 mkfifo ${n0}/${n1} 0644
+expect "EEXIST|ENOTEMPTY" rmdir ${n0}
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/07.t b/tools/regression/fstest/tests/rmdir/07.t
new file mode 100644
index 0000000..2528245
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/07.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EACCES when search permission is denied for a component of the path prefix"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..10"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 rmdir ${n1}/${n2}
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/08.t b/tools/regression/fstest/tests/rmdir/08.t
new file mode 100644
index 0000000..c1fb819
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/08.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EACCES when write permission is denied on the directory containing the link to be removed"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..10"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755
+expect 0 chmod ${n1} 0555
+expect EACCES -u 65534 -g 65534 rmdir ${n1}/${n2}
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/09.t b/tools/regression/fstest/tests/rmdir/09.t
new file mode 100644
index 0000000..6b3959d
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/09.t
@@ -0,0 +1,49 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EPERM if the named file has its immutable, undeletable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..30"
+
+n0=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM rmdir ${n0}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM rmdir ${n0}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 chflags ${n0} SF_NOUNLINK
+expect EPERM rmdir ${n0}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 chflags ${n0} UF_NOUNLINK
+expect EPERM rmdir ${n0}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 chflags ${n0} SF_APPEND
+expect EPERM rmdir ${n0}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 chflags ${n0} UF_APPEND
+expect EPERM rmdir ${n0}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/10.t b/tools/regression/fstest/tests/rmdir/10.t
new file mode 100644
index 0000000..2258041
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/10.t
@@ -0,0 +1,52 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EPERM if the parent directory of the named file has its immutable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..30"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} SF_APPEND
+expect EPERM rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} UF_APPEND
+expect EPERM rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
+
+expect 0 mkdir ${n0}/${n1} 0755
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 rmdir ${n0}/${n1}
+expect 0 chflags ${n0} none
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/11.t b/tools/regression/fstest/tests/rmdir/11.t
new file mode 100644
index 0000000..b899948
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/11.t
@@ -0,0 +1,40 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EACCES or EPERM if the directory containing the directory to be removed is marked sticky, and neither the containing directory nor the directory to be removed are owned by the effective user ID"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..15"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n2} 0755
+cdir=`pwd`
+cd ${n2}
+
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 65534 65534
+expect 0 chmod ${n0} 01777
+
+# User owns both: the sticky directory and the directory to be removed.
+expect 0 -u 65534 -g 65534 mkdir ${n0}/${n1} 0755
+expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1}
+# User owns the directory to be removed, but doesn't own the sticky directory.
+expect 0 -u 65533 -g 65533 mkdir ${n0}/${n1} 0755
+expect 0 -u 65533 -g 65533 rmdir ${n0}/${n1}
+# User owns the sticky directory, but doesn't own the directory to be removed.
+expect 0 -u 65533 -g 65533 mkdir ${n0}/${n1} 0755
+expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1}
+# User doesn't own the sticky directory nor the directory to be removed.
+expect 0 -u 65534 -g 65534 mkdir ${n0}/${n1} 0755
+expect "EACCES|EPERM" -u 65533 -g 65533 rmdir ${n0}/${n1}
+expect 0 rmdir ${n0}/${n1}
+
+expect 0 rmdir ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n2}
diff --git a/tools/regression/fstest/tests/rmdir/12.t b/tools/regression/fstest/tests/rmdir/12.t
new file mode 100644
index 0000000..06852f4
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/12.t
@@ -0,0 +1,26 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EINVAL if the last component of the path is '.' or '..'"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 mkdir ${n0}/${n1} 0755
+expect EINVAL rmdir ${n0}/${n1}/.
+case "${os}" in
+FreeBSD)
+ expect EINVAL rmdir ${n0}/${n1}/..
+ ;;
+*)
+ expect EEXIST rmdir ${n0}/${n1}/..
+ ;;
+esac
+expect 0 rmdir ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/rmdir/13.t b/tools/regression/fstest/tests/rmdir/13.t
new file mode 100644
index 0000000..65fb78e
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/13.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EBUSY if the directory to be removed is the mount point for a mounted file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}" in
+FreeBSD)
+ echo "1..3"
+
+ n0=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect EBUSY rmdir ${n0}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/rmdir/14.t b/tools/regression/fstest/tests/rmdir/14.t
new file mode 100644
index 0000000..b195933
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/14.t
@@ -0,0 +1,32 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EROFS if the named file resides on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..5"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 mkdir ${n0}/${n1} 0755
+ mount -ur /dev/md${n}
+ expect EROFS rmdir ${n0}/${n1}
+ mount -uw /dev/md${n}
+ expect 0 rmdir ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/rmdir/15.t b/tools/regression/fstest/tests/rmdir/15.t
new file mode 100644
index 0000000..8bfa149
--- /dev/null
+++ b/tools/regression/fstest/tests/rmdir/15.t
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="rmdir returns EFAULT if the path argument points outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..2"
+
+expect EFAULT rmdir NULL
+expect EFAULT rmdir DEADCODE
diff --git a/tools/regression/fstest/tests/symlink/00.t b/tools/regression/fstest/tests/symlink/00.t
new file mode 100644
index 0000000..6e6d46d
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/00.t
@@ -0,0 +1,32 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink creates symbolic links"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..14"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 create ${n0} 0644
+expect regular,0644 lstat ${n0} type,mode
+expect 0 symlink ${n0} ${n1}
+expect symlink lstat ${n1} type
+expect regular,0644 stat ${n1} type,mode
+expect 0 unlink ${n0}
+expect ENOENT stat ${n1} type,mode
+expect 0 unlink ${n1}
+
+expect 0 mkdir ${n0} 0755
+time=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 symlink test ${n0}/${n1}
+mtime=`${fstest} stat ${n0} mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat ${n0} ctime`
+test_check $time -lt $ctime
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/symlink/01.t b/tools/regression/fstest/tests/symlink/01.t
new file mode 100644
index 0000000..f19870c
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/01.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns ENOTDIR if a component of the name2 path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR symlink test ${n0}/${n1}/test
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/symlink/02.t b/tools/regression/fstest/tests/symlink/02.t
new file mode 100644
index 0000000..630ce8a
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/02.t
@@ -0,0 +1,20 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns ENAMETOOLONG if a component of the name2 pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..7"
+
+n0=`namegen`
+
+expect 0 symlink ${name255} ${n0}
+expect 0 unlink ${n0}
+expect 0 symlink ${n0} ${name255}
+expect 0 unlink ${name255}
+
+expect ENAMETOOLONG symlink ${n0} ${name256}
+expect 0 symlink ${name256} ${n0}
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/symlink/03.t b/tools/regression/fstest/tests/symlink/03.t
new file mode 100644
index 0000000..dc642d4
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/03.t
@@ -0,0 +1,26 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns ENAMETOOLONG if an entire length of either path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..14"
+
+n0=`namegen`
+
+expect 0 symlink ${path1023} ${n0}
+expect 0 unlink ${n0}
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 symlink ${n0} ${path1023}
+expect 0 unlink ${path1023}
+expect ENAMETOOLONG symlink ${n0} ${path1024}
+expect ENAMETOOLONG symlink ${path1024} ${n0}
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/symlink/04.t b/tools/regression/fstest/tests/symlink/04.t
new file mode 100644
index 0000000..cc5e7b7
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/04.t
@@ -0,0 +1,16 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns ENOENT if a component of the name2 path prefix does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT symlink test ${n0}/${n1}/test
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/symlink/05.t b/tools/regression/fstest/tests/symlink/05.t
new file mode 100644
index 0000000..c823a59
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/05.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns EACCES when a component of the name2 path prefix denies search permission"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2}
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 symlink test ${n1}/${n2}
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2}
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+
+expect 0 rmdir ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/symlink/06.t b/tools/regression/fstest/tests/symlink/06.t
new file mode 100644
index 0000000..1f27818
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/06.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns EACCES if the parent directory of the file to be created denies write permission"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2}
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+
+expect 0 chmod ${n1} 0555
+expect EACCES -u 65534 -g 65534 symlink test ${n1}/${n2}
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2}
+expect 0 unlink ${n1}/${n2}
+
+expect 0 rmdir ${n1}
+
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/symlink/07.t b/tools/regression/fstest/tests/symlink/07.t
new file mode 100644
index 0000000..aa60b77
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/07.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns ELOOP if too many symbolic links were encountered in translating the name2 path name"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP symlink test ${n0}/test
+expect ELOOP symlink test ${n1}/test
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/symlink/08.t b/tools/regression/fstest/tests/symlink/08.t
new file mode 100644
index 0000000..c4843e5
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/08.t
@@ -0,0 +1,23 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns EEXIST if the name2 argument already exists"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..9"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect EEXIST symlink test ${n0}
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect EEXIST symlink test ${n0}
+expect 0 rmdir ${n0}
+
+expect 0 symlink test ${n0}
+expect EEXIST symlink test ${n0}
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/symlink/09.t b/tools/regression/fstest/tests/symlink/09.t
new file mode 100644
index 0000000..174b5bd
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/09.t
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns EPERM if the parent directory of the file named by name2 has its immutable flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..30"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 symlink test ${n0}/${n1}
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM symlink test ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 symlink test ${n0}/${n1}
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM symlink test ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 symlink test ${n0}/${n1}
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_APPEND
+expect 0 symlink test ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_APPEND
+expect 0 symlink test ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 symlink test ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 symlink test ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/symlink/10.t b/tools/regression/fstest/tests/symlink/10.t
new file mode 100644
index 0000000..a8c43bf
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/10.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns EROFS if the file name2 would reside on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..7"
+
+ n0=`namegen`
+ n1=`namegen`
+ n2=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+
+ expect 0 symlink test ${n0}/${n1}
+ expect 0 unlink ${n0}/${n1}
+ mount -ur /dev/md${n}
+ expect EROFS symlink test ${n0}/${n1}
+ mount -uw /dev/md${n}
+ expect 0 symlink test ${n0}/${n1}
+ expect 0 unlink ${n0}/${n1}
+
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/symlink/11.t b/tools/regression/fstest/tests/symlink/11.t
new file mode 100644
index 0000000..0459851
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/11.t
@@ -0,0 +1,36 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns ENOSPC if there are no free inodes on the file system on which the symbolic link is being created"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..3"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 256k`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ i=0
+ while :; do
+ ln -s test ${n0}/${i} >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ i=`expr $i + 1`
+ done
+ expect ENOSPC symlink test ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/symlink/12.t b/tools/regression/fstest/tests/symlink/12.t
new file mode 100644
index 0000000..8606a38
--- /dev/null
+++ b/tools/regression/fstest/tests/symlink/12.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="symlink returns EFAULT if one of the pathnames specified is outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+
+expect EFAULT symlink NULL ${n0}
+expect EFAULT symlink DEADCODE ${n0}
+expect EFAULT symlink test NULL
+expect EFAULT symlink test DEADCODE
+expect EFAULT symlink NULL DEADCODE
+expect EFAULT symlink DEADCODE NULL
diff --git a/tools/regression/fstest/tests/truncate/00.t b/tools/regression/fstest/tests/truncate/00.t
new file mode 100644
index 0000000..c09f068
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/00.t
@@ -0,0 +1,51 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate descrease/increase file size"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..21"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n1} 0755
+cdir=`pwd`
+cd ${n1}
+
+expect 0 create ${n0} 0644
+expect 0 truncate ${n0} 1234567
+expect 1234567 lstat ${n0} size
+expect 0 truncate ${n0} 567
+expect 567 lstat ${n0} size
+expect 0 unlink ${n0}
+
+dd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1
+expect 0 truncate ${n0} 23456
+expect 23456 lstat ${n0} size
+expect 0 truncate ${n0} 1
+expect 1 lstat ${n0} size
+expect 0 unlink ${n0}
+
+# successful truncate(2) updates ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 truncate ${n0} 123
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+# unsuccessful truncate(2) does not update ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EACCES -u 65534 truncate ${n0} 123
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n1}
diff --git a/tools/regression/fstest/tests/truncate/01.t b/tools/regression/fstest/tests/truncate/01.t
new file mode 100644
index 0000000..ac504a1
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/01.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns ENOTDIR if a component of the path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR truncate ${n0}/${n1}/test 123
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/truncate/02.t b/tools/regression/fstest/tests/truncate/02.t
new file mode 100644
index 0000000..e418b96
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/02.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns ENAMETOOLONG if a component of a pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+expect 0 create ${name255} 0644
+expect 0 truncate ${name255} 123
+expect 123 stat ${name255} size
+expect 0 unlink ${name255}
+expect ENAMETOOLONG truncate ${name256} 123
diff --git a/tools/regression/fstest/tests/truncate/03.t b/tools/regression/fstest/tests/truncate/03.t
new file mode 100644
index 0000000..6a4cd64
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/03.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns ENAMETOOLONG if an entire path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 create ${path1023} 0644
+expect 0 truncate ${path1023} 123
+expect 0 unlink ${path1023}
+expect ENAMETOOLONG truncate ${path1024} 123
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/truncate/04.t b/tools/regression/fstest/tests/truncate/04.t
new file mode 100644
index 0000000..14f513c
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/04.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns ENOENT if the named file does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect ENOENT truncate ${n0}/${n1}/test 123
+expect ENOENT truncate ${n0}/${n1} 123
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/truncate/05.t b/tools/regression/fstest/tests/truncate/05.t
new file mode 100644
index 0000000..9aa65c8
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/05.t
@@ -0,0 +1,32 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns EACCES when search permission is denied for a component of the path prefix"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..15"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
+expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 123
+expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 truncate ${n1}/${n2} 1234
+expect 0 chmod ${n1} 0755
+expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size
+expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 1234
+expect 1234 -u 65534 -g 65534 stat ${n1}/${n2} size
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/truncate/06.t b/tools/regression/fstest/tests/truncate/06.t
new file mode 100644
index 0000000..8e0ca5b
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/06.t
@@ -0,0 +1,24 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns EACCES if the named file is not writable by the user"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..8"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 create ${n1} 0644
+expect EACCES -u 65534 -g 65534 truncate ${n1} 123
+expect 0 chown ${n1} 65534 65534
+expect 0 chmod ${n1} 0444
+expect EACCES -u 65534 -g 65534 truncate ${n1} 123
+expect 0 unlink ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/truncate/07.t b/tools/regression/fstest/tests/truncate/07.t
new file mode 100644
index 0000000..60b8b90
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/07.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns ELOOP if too many symbolic links were encountered in translating the pathname"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP truncate ${n0}/test 123
+expect ELOOP truncate ${n1}/test 123
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/truncate/08.t b/tools/regression/fstest/tests/truncate/08.t
new file mode 100644
index 0000000..e4ea0fa
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/08.t
@@ -0,0 +1,59 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns EPERM if the named file has its immutable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..40"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM truncate ${n0} 123
+expect 0 stat ${n0} size
+expect 0 chflags ${n0} none
+expect 0 truncate ${n0} 123
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM truncate ${n0} 123
+expect 0 stat ${n0} size
+expect 0 chflags ${n0} none
+expect 0 truncate ${n0} 123
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_APPEND
+expect EPERM truncate ${n0} 123
+expect 0 stat ${n0} size
+expect 0 chflags ${n0} none
+expect 0 truncate ${n0} 123
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_APPEND
+expect EPERM truncate ${n0} 123
+expect 0 stat ${n0} size
+expect 0 chflags ${n0} none
+expect 0 truncate ${n0} 123
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 truncate ${n0} 123
+expect 123 stat ${n0} size
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 truncate ${n0} 123
+expect 123 stat ${n0} size
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/truncate/09.t b/tools/regression/fstest/tests/truncate/09.t
new file mode 100644
index 0000000..1d95c7f
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/09.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns EISDIR if the named file is a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+n0=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect EISDIR truncate ${n0} 123
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/truncate/10.t b/tools/regression/fstest/tests/truncate/10.t
new file mode 100644
index 0000000..2dc0b45
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/10.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns EROFS if the named file resides on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..10"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ expect 0 truncate ${n0}/${n1} 123
+ expect 123 stat ${n0}/${n1} size
+ mount -ur /dev/md${n}
+ expect EROFS truncate ${n0}/${n1} 1234
+ expect 123 stat ${n0}/${n1} size
+ mount -uw /dev/md${n}
+ expect 0 truncate ${n0}/${n1} 1234
+ expect 1234 stat ${n0}/${n1} size
+ expect 0 unlink ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/truncate/11.t b/tools/regression/fstest/tests/truncate/11.t
new file mode 100644
index 0000000..f86235b
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/11.t
@@ -0,0 +1,23 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns ETXTBSY the file is a pure procedure (shared text) file that is being executed"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}" in
+FreeBSD)
+ echo "1..2"
+
+ n0=`namegen`
+
+ cp -pf `which sleep` ${n0}
+ ./${n0} 3 &
+ expect ETXTBSY truncate ${n0} 123
+ expect 0 unlink ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/truncate/12.t b/tools/regression/fstest/tests/truncate/12.t
new file mode 100644
index 0000000..cf6a497
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/12.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns EFBIG or EINVAL if the length argument was greater than the maximum file size"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+r=`${fstest} truncate ${n0} 999999999999999 2>/dev/null`
+case "${r}" in
+EFBIG|EINVAL)
+ expect 0 stat ${n0} size
+ ;;
+0)
+ expect 999999999999999 stat ${n0} size
+ ;;
+*)
+ echo "not ok ${ntest}"
+ ntest=`expr ${ntest} + 1`
+ ;;
+esac
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/truncate/13.t b/tools/regression/fstest/tests/truncate/13.t
new file mode 100644
index 0000000..1084c43
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/13.t
@@ -0,0 +1,16 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns EINVAL if the length argument was less than 0"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect EINVAL truncate ${n0} -1
+expect EINVAL truncate ${n0} -999999
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/truncate/14.t b/tools/regression/fstest/tests/truncate/14.t
new file mode 100644
index 0000000..53dca71
--- /dev/null
+++ b/tools/regression/fstest/tests/truncate/14.t
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="truncate returns EFAULT if the path argument points outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..2"
+
+expect EFAULT truncate NULL 123
+expect EFAULT truncate DEADCODE 123
diff --git a/tools/regression/fstest/tests/unlink/00.t b/tools/regression/fstest/tests/unlink/00.t
new file mode 100644
index 0000000..af4ccbf
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/00.t
@@ -0,0 +1,115 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink removes regular files, symbolic links, fifos and sockets"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..55"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n2} 0755
+cdir=`pwd`
+cd ${n2}
+
+expect 0 create ${n0} 0644
+expect regular lstat ${n0} type
+expect 0 unlink ${n0}
+expect ENOENT lstat ${n0} type
+
+expect 0 symlink ${n1} ${n0}
+expect symlink lstat ${n0} type
+expect 0 unlink ${n0}
+expect ENOENT lstat ${n0} type
+
+expect 0 mkfifo ${n0} 0644
+expect fifo lstat ${n0} type
+expect 0 unlink ${n0}
+expect ENOENT lstat ${n0} type
+
+# TODO: sockets removal
+
+# successful unlink(2) updates ctime.
+expect 0 create ${n0} 0644
+expect 0 link ${n0} ${n1}
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 unlink ${n1}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mkfifo ${n0} 0644
+expect 0 link ${n0} ${n1}
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 unlink ${n1}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -lt $ctime2
+expect 0 unlink ${n0}
+
+# unsuccessful unlink(2) does not update ctime.
+expect 0 create ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EACCES -u 65534 unlink ${n0}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mkfifo ${n0} 0644
+ctime1=`${fstest} stat ${n0} ctime`
+sleep 1
+expect EACCES -u 65534 unlink ${n0}
+ctime2=`${fstest} stat ${n0} ctime`
+test_check $ctime1 -eq $ctime2
+expect 0 unlink ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+time=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 unlink ${n0}/${n1}
+mtime=`${fstest} stat ${n0} mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat ${n0} ctime`
+test_check $time -lt $ctime
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 mkfifo ${n0}/${n1} 0644
+time=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 unlink ${n0}/${n1}
+mtime=`${fstest} stat ${n0} mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat ${n0} ctime`
+test_check $time -lt $ctime
+expect 0 rmdir ${n0}
+
+expect 0 mkdir ${n0} 0755
+expect 0 symlink test ${n0}/${n1}
+time=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 unlink ${n0}/${n1}
+mtime=`${fstest} stat ${n0} mtime`
+test_check $time -lt $mtime
+ctime=`${fstest} stat ${n0} ctime`
+test_check $time -lt $ctime
+expect 0 rmdir ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 link ${n0} ${n1}
+time=`${fstest} stat ${n0} ctime`
+sleep 1
+expect 0 unlink ${n1}
+ctime=`${fstest} stat ${n0} ctime`
+test_check $time -lt $ctime
+expect 0 unlink ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n2}
diff --git a/tools/regression/fstest/tests/unlink/01.t b/tools/regression/fstest/tests/unlink/01.t
new file mode 100644
index 0000000..13fa0fe
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/01.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns ENOTDIR if a component of the path prefix is not a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..5"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+expect 0 create ${n0}/${n1} 0644
+expect ENOTDIR unlink ${n0}/${n1}/test
+expect 0 unlink ${n0}/${n1}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/unlink/02.t b/tools/regression/fstest/tests/unlink/02.t
new file mode 100644
index 0000000..0d4c579
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/02.t
@@ -0,0 +1,14 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns ENAMETOOLONG if a component of a pathname exceeded 255 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+expect 0 create ${name255} 0644
+expect 0 unlink ${name255}
+expect ENOENT unlink ${name255}
+expect ENAMETOOLONG unlink ${name256}
diff --git a/tools/regression/fstest/tests/unlink/03.t b/tools/regression/fstest/tests/unlink/03.t
new file mode 100644
index 0000000..2c62eef
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/03.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns ENAMETOOLONG if an entire path name exceeded 1023 characters"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..12"
+
+expect 0 mkdir ${name255} 0755
+expect 0 mkdir ${name255}/${name255} 0755
+expect 0 mkdir ${name255}/${name255}/${name255} 0755
+expect 0 mkdir ${path1021} 0755
+expect 0 create ${path1023} 0644
+expect 0 unlink ${path1023}
+expect ENOENT unlink ${path1023}
+expect ENAMETOOLONG unlink ${path1024}
+expect 0 rmdir ${path1021}
+expect 0 rmdir ${name255}/${name255}/${name255}
+expect 0 rmdir ${name255}/${name255}
+expect 0 rmdir ${name255}
diff --git a/tools/regression/fstest/tests/unlink/04.t b/tools/regression/fstest/tests/unlink/04.t
new file mode 100644
index 0000000..7885f27
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/04.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns ENOENT if the named file does not exist"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..4"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 unlink ${n0}
+expect ENOENT unlink ${n0}
+expect ENOENT unlink ${n1}
diff --git a/tools/regression/fstest/tests/unlink/05.t b/tools/regression/fstest/tests/unlink/05.t
new file mode 100644
index 0000000..c30c353
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/05.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns EACCES when search permission is denied for a component of the path prefix"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..10"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
+expect 0 chmod ${n1} 0644
+expect EACCES -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/unlink/06.t b/tools/regression/fstest/tests/unlink/06.t
new file mode 100644
index 0000000..3a64aa2
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/06.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns EACCES when write permission is denied on the directory containing the link to be removed"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..10"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n0} 0755
+cdir=`pwd`
+cd ${n0}
+expect 0 mkdir ${n1} 0755
+expect 0 chown ${n1} 65534 65534
+expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644
+expect 0 chmod ${n1} 0555
+expect EACCES -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 chmod ${n1} 0755
+expect 0 -u 65534 -g 65534 unlink ${n1}/${n2}
+expect 0 rmdir ${n1}
+cd ${cdir}
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/unlink/07.t b/tools/regression/fstest/tests/unlink/07.t
new file mode 100644
index 0000000..ea9d2a3
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/07.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns ELOOP if too many symbolic links were encountered in translating the pathname"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..6"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 symlink ${n0} ${n1}
+expect 0 symlink ${n1} ${n0}
+expect ELOOP unlink ${n0}/test
+expect ELOOP unlink ${n1}/test
+expect 0 unlink ${n0}
+expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/unlink/08.t b/tools/regression/fstest/tests/unlink/08.t
new file mode 100644
index 0000000..5b0f03b
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/08.t
@@ -0,0 +1,23 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns EPERM if the named file is a directory"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..3"
+
+n0=`namegen`
+
+expect 0 mkdir ${n0} 0755
+case "${os}:${fs}" in
+SunOS:UFS)
+ expect 0 unlink ${n0}
+ expect ENOENT rmdir ${n0}
+ ;;
+*)
+ expect EPERM unlink ${n0}
+ expect 0 rmdir ${n0}
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/unlink/09.t b/tools/regression/fstest/tests/unlink/09.t
new file mode 100644
index 0000000..c069b0d
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/09.t
@@ -0,0 +1,49 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns EPERM if the named file has its immutable, undeletable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..30"
+
+n0=`namegen`
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM unlink ${n0}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM unlink ${n0}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_NOUNLINK
+expect EPERM unlink ${n0}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_NOUNLINK
+expect EPERM unlink ${n0}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} SF_APPEND
+expect EPERM unlink ${n0}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
+
+expect 0 create ${n0} 0644
+expect 0 chflags ${n0} UF_APPEND
+expect EPERM unlink ${n0}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}
diff --git a/tools/regression/fstest/tests/unlink/10.t b/tools/regression/fstest/tests/unlink/10.t
new file mode 100644
index 0000000..cf4188a
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/10.t
@@ -0,0 +1,52 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns EPERM if the parent directory of the named file has its immutable or append-only flag set"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+require chflags
+
+echo "1..30"
+
+n0=`namegen`
+n1=`namegen`
+
+expect 0 mkdir ${n0} 0755
+
+expect 0 create ${n0}/${n1} 0644
+expect 0 chflags ${n0} SF_IMMUTABLE
+expect EPERM unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 create ${n0}/${n1} 0644
+expect 0 chflags ${n0} UF_IMMUTABLE
+expect EPERM unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 create ${n0}/${n1} 0644
+expect 0 chflags ${n0} SF_APPEND
+expect EPERM unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 create ${n0}/${n1} 0644
+expect 0 chflags ${n0} UF_APPEND
+expect EPERM unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
+expect 0 unlink ${n0}/${n1}
+
+expect 0 create ${n0}/${n1} 0644
+expect 0 chflags ${n0} SF_NOUNLINK
+expect 0 unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
+
+expect 0 create ${n0}/${n1} 0644
+expect 0 chflags ${n0} UF_NOUNLINK
+expect 0 unlink ${n0}/${n1}
+expect 0 chflags ${n0} none
+
+expect 0 rmdir ${n0}
diff --git a/tools/regression/fstest/tests/unlink/11.t b/tools/regression/fstest/tests/unlink/11.t
new file mode 100644
index 0000000..68084ec
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/11.t
@@ -0,0 +1,68 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns EACCES or EPERM if the directory containing the file is marked sticky, and neither the containing directory nor the file to be removed are owned by the effective user ID"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..33"
+
+n0=`namegen`
+n1=`namegen`
+n2=`namegen`
+
+expect 0 mkdir ${n2} 0755
+cdir=`pwd`
+cd ${n2}
+
+expect 0 mkdir ${n0} 0755
+expect 0 chown ${n0} 65534 65534
+expect 0 chmod ${n0} 01777
+
+# User owns both: the sticky directory and the file to be removed.
+expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644
+expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
+# User owns the file to be removed, but doesn't own the sticky directory.
+expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644
+expect 0 -u 65533 -g 65533 unlink ${n0}/${n1}
+# User owns the sticky directory, but doesn't own the file to be removed.
+expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644
+expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
+# User doesn't own the sticky directory nor the file to be removed.
+expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644
+expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1}
+expect 0 unlink ${n0}/${n1}
+
+# User owns both: the sticky directory and the fifo to be removed.
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644
+expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
+# User owns the fifo to be removed, but doesn't own the sticky directory.
+expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644
+expect 0 -u 65533 -g 65533 unlink ${n0}/${n1}
+# User owns the sticky directory, but doesn't own the fifo to be removed.
+expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644
+expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
+# User doesn't own the sticky directory nor the fifo to be removed.
+expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644
+expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1}
+expect 0 unlink ${n0}/${n1}
+
+# User owns both: the sticky directory and the symlink to be removed.
+expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1}
+expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
+# User owns the symlink to be removed, but doesn't own the sticky directory.
+expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1}
+expect 0 -u 65533 -g 65533 unlink ${n0}/${n1}
+# User owns the sticky directory, but doesn't own the symlink to be removed.
+expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1}
+expect 0 -u 65534 -g 65534 unlink ${n0}/${n1}
+# User doesn't own the sticky directory nor the symlink to be removed.
+expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1}
+expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1}
+expect 0 unlink ${n0}/${n1}
+
+expect 0 rmdir ${n0}
+
+cd ${cdir}
+expect 0 rmdir ${n2}
diff --git a/tools/regression/fstest/tests/unlink/12.t b/tools/regression/fstest/tests/unlink/12.t
new file mode 100644
index 0000000..65a3aaf
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/12.t
@@ -0,0 +1,32 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns EROFS if the named file resides on a read-only file system"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+case "${os}:${fs}" in
+FreeBSD:UFS)
+ echo "1..5"
+
+ n0=`namegen`
+ n1=`namegen`
+
+ expect 0 mkdir ${n0} 0755
+ n=`mdconfig -a -n -t malloc -s 1m`
+ newfs /dev/md${n} >/dev/null
+ mount /dev/md${n} ${n0}
+ expect 0 create ${n0}/${n1} 0644
+ mount -ur /dev/md${n}
+ expect EROFS unlink ${n0}/${n1}
+ mount -uw /dev/md${n}
+ expect 0 unlink ${n0}/${n1}
+ umount /dev/md${n}
+ mdconfig -d -u ${n}
+ expect 0 rmdir ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
diff --git a/tools/regression/fstest/tests/unlink/13.t b/tools/regression/fstest/tests/unlink/13.t
new file mode 100644
index 0000000..da5e718
--- /dev/null
+++ b/tools/regression/fstest/tests/unlink/13.t
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+desc="unlink returns EFAULT if the path argument points outside the process's allocated address space"
+
+dir=`dirname $0`
+. ${dir}/../misc.sh
+
+echo "1..2"
+
+expect EFAULT unlink NULL
+expect EFAULT unlink DEADCODE
diff --git a/tools/regression/fsx/Makefile b/tools/regression/fsx/Makefile
new file mode 100644
index 0000000..687e7dd
--- /dev/null
+++ b/tools/regression/fsx/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= fsx
+
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/fsx/fsx.c b/tools/regression/fsx/fsx.c
new file mode 100644
index 0000000..316185d
--- /dev/null
+++ b/tools/regression/fsx/fsx.c
@@ -0,0 +1,1149 @@
+/*
+ * Copyright (c) 1998-2001 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * The contents of this file constitute Original Code as defined in and
+ * are subject to the Apple Public Source License Version 2.0 (the
+ * "License"). You may not use this file except in compliance with the
+ * License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * This Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ *
+ * File: fsx.c
+ * Author: Avadis Tevanian, Jr.
+ *
+ * File system exerciser.
+ *
+ * Rewrite and enhancements 1998-2001 Conrad Minshall -- conrad@mac.com
+ *
+ * Various features from Joe Sokol, Pat Dirks, and Clark Warner.
+ *
+ * Small changes to work under Linux -- davej@suse.de
+ *
+ * Sundry porting patches from Guy Harris 12/2001
+ *
+ * Checks for mmap last-page zero fill.
+ *
+ * Updated license to APSL 2.0, 2004/7/27 - Jordan Hubbard
+ *
+ * $FreeBSD$
+ *
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef _UWIN
+# include <sys/param.h>
+# include <limits.h>
+# include <time.h>
+# include <strings.h>
+#endif
+#include <fcntl.h>
+#include <sys/mman.h>
+#ifndef MAP_FILE
+# define MAP_FILE 0
+#endif
+#include <limits.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdarg.h>
+#include <errno.h>
+
+#define NUMPRINTCOLUMNS 32 /* # columns of data to print on each line */
+
+/*
+ * A log entry is an operation and a bunch of arguments.
+ */
+
+struct log_entry {
+ int operation;
+ int args[3];
+};
+
+#define LOGSIZE 1000
+
+struct log_entry oplog[LOGSIZE]; /* the log */
+int logptr = 0; /* current position in log */
+int logcount = 0; /* total ops */
+
+/*
+ * Define operations
+ */
+
+#define OP_READ 1
+#define OP_WRITE 2
+#define OP_TRUNCATE 3
+#define OP_CLOSEOPEN 4
+#define OP_MAPREAD 5
+#define OP_MAPWRITE 6
+#define OP_SKIPPED 7
+
+int page_size;
+int page_mask;
+
+char *original_buf; /* a pointer to the original data */
+char *good_buf; /* a pointer to the correct data */
+char *temp_buf; /* a pointer to the current data */
+char *fname; /* name of our test file */
+int fd; /* fd for our test file */
+
+off_t file_size = 0;
+off_t biggest = 0;
+char state[256];
+unsigned long testcalls = 0; /* calls to function "test" */
+
+unsigned long simulatedopcount = 0; /* -b flag */
+int closeprob = 0; /* -c flag */
+int debug = 0; /* -d flag */
+unsigned long debugstart = 0; /* -D flag */
+unsigned long maxfilelen = 256 * 1024; /* -l flag */
+int sizechecks = 1; /* -n flag disables them */
+int maxoplen = 64 * 1024; /* -o flag */
+int quiet = 0; /* -q flag */
+unsigned long progressinterval = 0; /* -p flag */
+int readbdy = 1; /* -r flag */
+int style = 0; /* -s flag */
+int truncbdy = 1; /* -t flag */
+int writebdy = 1; /* -w flag */
+long monitorstart = -1; /* -m flag */
+long monitorend = -1; /* -m flag */
+int lite = 0; /* -L flag */
+long numops = -1; /* -N flag */
+int randomoplen = 1; /* -O flag disables it */
+int seed = 1; /* -S flag */
+int mapped_writes = 1; /* -W flag disables */
+int mapped_reads = 1; /* -R flag disables it */
+int fsxgoodfd = 0;
+FILE * fsxlogf = NULL;
+int badoff = -1;
+int closeopen = 0;
+
+
+void
+vwarnc(code, fmt, ap)
+ int code;
+ const char *fmt;
+ va_list ap;
+{
+ fprintf(stderr, "fsx: ");
+ if (fmt != NULL) {
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, ": ");
+ }
+ fprintf(stderr, "%s\n", strerror(code));
+}
+
+
+void
+warn(const char * fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ vwarnc(errno, fmt, ap);
+ va_end(ap);
+}
+
+
+void
+prt(char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ vfprintf(stdout, fmt, args);
+ if (fsxlogf)
+ vfprintf(fsxlogf, fmt, args);
+ va_end(args);
+}
+
+void
+prterr(char *prefix)
+{
+ prt("%s%s%s\n", prefix, prefix ? ": " : "", strerror(errno));
+}
+
+
+void
+log4(int operation, int arg0, int arg1, int arg2)
+{
+ struct log_entry *le;
+
+ le = &oplog[logptr];
+ le->operation = operation;
+ if (closeopen)
+ le->operation = ~ le->operation;
+ le->args[0] = arg0;
+ le->args[1] = arg1;
+ le->args[2] = arg2;
+ logptr++;
+ logcount++;
+ if (logptr >= LOGSIZE)
+ logptr = 0;
+}
+
+
+void
+logdump(void)
+{
+ int i, count, down;
+ struct log_entry *lp;
+
+ prt("LOG DUMP (%d total operations):\n", logcount);
+ if (logcount < LOGSIZE) {
+ i = 0;
+ count = logcount;
+ } else {
+ i = logptr;
+ count = LOGSIZE;
+ }
+ for ( ; count > 0; count--) {
+ int opnum;
+
+ opnum = i+1 + (logcount/LOGSIZE)*LOGSIZE;
+ prt("%d(%d mod 256): ", opnum, opnum%256);
+ lp = &oplog[i];
+ if ((closeopen = lp->operation < 0))
+ lp->operation = ~ lp->operation;
+
+ switch (lp->operation) {
+ case OP_MAPREAD:
+ prt("MAPREAD\t0x%x thru 0x%x\t(0x%x bytes)",
+ lp->args[0], lp->args[0] + lp->args[1] - 1,
+ lp->args[1]);
+ if (badoff >= lp->args[0] && badoff <
+ lp->args[0] + lp->args[1])
+ prt("\t***RRRR***");
+ break;
+ case OP_MAPWRITE:
+ prt("MAPWRITE 0x%x thru 0x%x\t(0x%x bytes)",
+ lp->args[0], lp->args[0] + lp->args[1] - 1,
+ lp->args[1]);
+ if (badoff >= lp->args[0] && badoff <
+ lp->args[0] + lp->args[1])
+ prt("\t******WWWW");
+ break;
+ case OP_READ:
+ prt("READ\t0x%x thru 0x%x\t(0x%x bytes)",
+ lp->args[0], lp->args[0] + lp->args[1] - 1,
+ lp->args[1]);
+ if (badoff >= lp->args[0] &&
+ badoff < lp->args[0] + lp->args[1])
+ prt("\t***RRRR***");
+ break;
+ case OP_WRITE:
+ prt("WRITE\t0x%x thru 0x%x\t(0x%x bytes)",
+ lp->args[0], lp->args[0] + lp->args[1] - 1,
+ lp->args[1]);
+ if (lp->args[0] > lp->args[2])
+ prt(" HOLE");
+ else if (lp->args[0] + lp->args[1] > lp->args[2])
+ prt(" EXTEND");
+ if ((badoff >= lp->args[0] || badoff >=lp->args[2]) &&
+ badoff < lp->args[0] + lp->args[1])
+ prt("\t***WWWW");
+ break;
+ case OP_TRUNCATE:
+ down = lp->args[0] < lp->args[1];
+ prt("TRUNCATE %s\tfrom 0x%x to 0x%x",
+ down ? "DOWN" : "UP", lp->args[1], lp->args[0]);
+ if (badoff >= lp->args[!down] &&
+ badoff < lp->args[!!down])
+ prt("\t******WWWW");
+ break;
+ case OP_SKIPPED:
+ prt("SKIPPED (no operation)");
+ break;
+ default:
+ prt("BOGUS LOG ENTRY (operation code = %d)!",
+ lp->operation);
+ }
+ if (closeopen)
+ prt("\n\t\tCLOSE/OPEN");
+ prt("\n");
+ i++;
+ if (i == LOGSIZE)
+ i = 0;
+ }
+}
+
+
+void
+save_buffer(char *buffer, off_t bufferlength, int fd)
+{
+ off_t ret;
+ ssize_t byteswritten;
+
+ if (fd <= 0 || bufferlength == 0)
+ return;
+
+ if (bufferlength > SSIZE_MAX) {
+ prt("fsx flaw: overflow in save_buffer\n");
+ exit(67);
+ }
+ if (lite) {
+ off_t size_by_seek = lseek(fd, (off_t)0, SEEK_END);
+ if (size_by_seek == (off_t)-1)
+ prterr("save_buffer: lseek eof");
+ else if (bufferlength > size_by_seek) {
+ warn("save_buffer: .fsxgood file too short... will save 0x%llx bytes instead of 0x%llx\n", (unsigned long long)size_by_seek,
+ (unsigned long long)bufferlength);
+ bufferlength = size_by_seek;
+ }
+ }
+
+ ret = lseek(fd, (off_t)0, SEEK_SET);
+ if (ret == (off_t)-1)
+ prterr("save_buffer: lseek 0");
+
+ byteswritten = write(fd, buffer, (size_t)bufferlength);
+ if (byteswritten != bufferlength) {
+ if (byteswritten == -1)
+ prterr("save_buffer write");
+ else
+ warn("save_buffer: short write, 0x%x bytes instead of 0x%llx\n",
+ (unsigned)byteswritten,
+ (unsigned long long)bufferlength);
+ }
+}
+
+
+void
+report_failure(int status)
+{
+ logdump();
+
+ if (fsxgoodfd) {
+ if (good_buf) {
+ save_buffer(good_buf, file_size, fsxgoodfd);
+ prt("Correct content saved for comparison\n");
+ prt("(maybe hexdump \"%s\" vs \"%s.fsxgood\")\n",
+ fname, fname);
+ }
+ close(fsxgoodfd);
+ }
+ exit(status);
+}
+
+
+#define short_at(cp) ((unsigned short)((*((unsigned char *)(cp)) << 8) | \
+ *(((unsigned char *)(cp)) + 1)))
+
+void
+check_buffers(unsigned offset, unsigned size)
+{
+ unsigned char c, t;
+ unsigned i = 0;
+ unsigned n = 0;
+ unsigned op = 0;
+ unsigned bad = 0;
+
+ if (memcmp(good_buf + offset, temp_buf, size) != 0) {
+ prt("READ BAD DATA: offset = 0x%x, size = 0x%x\n",
+ offset, size);
+ prt("OFFSET\tGOOD\tBAD\tRANGE\n");
+ while (size > 0) {
+ c = good_buf[offset];
+ t = temp_buf[i];
+ if (c != t) {
+ if (n == 0) {
+ bad = short_at(&temp_buf[i]);
+ prt("0x%5x\t0x%04x\t0x%04x", offset,
+ short_at(&good_buf[offset]), bad);
+ op = temp_buf[offset & 1 ? i+1 : i];
+ }
+ n++;
+ badoff = offset;
+ }
+ offset++;
+ i++;
+ size--;
+ }
+ if (n) {
+ prt("\t0x%5x\n", n);
+ if (bad)
+ prt("operation# (mod 256) for the bad data may be %u\n", ((unsigned)op & 0xff));
+ else
+ prt("operation# (mod 256) for the bad data unknown, check HOLE and EXTEND ops\n");
+ } else
+ prt("????????????????\n");
+ report_failure(110);
+ }
+}
+
+
+void
+check_size(void)
+{
+ struct stat statbuf;
+ off_t size_by_seek;
+
+ if (fstat(fd, &statbuf)) {
+ prterr("check_size: fstat");
+ statbuf.st_size = -1;
+ }
+ size_by_seek = lseek(fd, (off_t)0, SEEK_END);
+ if (file_size != statbuf.st_size || file_size != size_by_seek) {
+ prt("Size error: expected 0x%llx stat 0x%llx seek 0x%llx\n",
+ (unsigned long long)file_size,
+ (unsigned long long)statbuf.st_size,
+ (unsigned long long)size_by_seek);
+ report_failure(120);
+ }
+}
+
+
+void
+check_trunc_hack(void)
+{
+ struct stat statbuf;
+
+ ftruncate(fd, (off_t)0);
+ ftruncate(fd, (off_t)100000);
+ fstat(fd, &statbuf);
+ if (statbuf.st_size != (off_t)100000) {
+ prt("no extend on truncate! not posix!\n");
+ exit(130);
+ }
+ ftruncate(fd, (off_t)0);
+}
+
+
+void
+doread(unsigned offset, unsigned size)
+{
+ off_t ret;
+ unsigned iret;
+
+ offset -= offset % readbdy;
+ if (size == 0) {
+ if (!quiet && testcalls > simulatedopcount)
+ prt("skipping zero size read\n");
+ log4(OP_SKIPPED, OP_READ, offset, size);
+ return;
+ }
+ if (size + offset > file_size) {
+ if (!quiet && testcalls > simulatedopcount)
+ prt("skipping seek/read past end of file\n");
+ log4(OP_SKIPPED, OP_READ, offset, size);
+ return;
+ }
+
+ log4(OP_READ, offset, size, 0);
+
+ if (testcalls <= simulatedopcount)
+ return;
+
+ if (!quiet && ((progressinterval &&
+ testcalls % progressinterval == 0) ||
+ (debug &&
+ (monitorstart == -1 ||
+ (offset + size > monitorstart &&
+ (monitorend == -1 || offset <= monitorend))))))
+ prt("%lu read\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls,
+ offset, offset + size - 1, size);
+ ret = lseek(fd, (off_t)offset, SEEK_SET);
+ if (ret == (off_t)-1) {
+ prterr("doread: lseek");
+ report_failure(140);
+ }
+ iret = read(fd, temp_buf, size);
+ if (iret != size) {
+ if (iret == -1)
+ prterr("doread: read");
+ else
+ prt("short read: 0x%x bytes instead of 0x%x\n",
+ iret, size);
+ report_failure(141);
+ }
+ check_buffers(offset, size);
+}
+
+
+void
+check_eofpage(char *s, unsigned offset, char *p, int size)
+{
+ uintptr_t last_page, should_be_zero;
+
+ if (offset + size <= (file_size & ~page_mask))
+ return;
+ /*
+ * we landed in the last page of the file
+ * test to make sure the VM system provided 0's
+ * beyond the true end of the file mapping
+ * (as required by mmap def in 1996 posix 1003.1)
+ */
+ last_page = ((uintptr_t)p + (offset & page_mask) + size) & ~page_mask;
+
+ for (should_be_zero = last_page + (file_size & page_mask);
+ should_be_zero < last_page + page_size;
+ should_be_zero++)
+ if (*(char *)should_be_zero) {
+ prt("Mapped %s: non-zero data past EOF (0x%llx) page offset 0x%x is 0x%04x\n",
+ s, file_size - 1, should_be_zero & page_mask,
+ short_at(should_be_zero));
+ report_failure(205);
+ }
+}
+
+
+void
+domapread(unsigned offset, unsigned size)
+{
+ unsigned pg_offset;
+ unsigned map_size;
+ char *p;
+
+ offset -= offset % readbdy;
+ if (size == 0) {
+ if (!quiet && testcalls > simulatedopcount)
+ prt("skipping zero size read\n");
+ log4(OP_SKIPPED, OP_MAPREAD, offset, size);
+ return;
+ }
+ if (size + offset > file_size) {
+ if (!quiet && testcalls > simulatedopcount)
+ prt("skipping seek/read past end of file\n");
+ log4(OP_SKIPPED, OP_MAPREAD, offset, size);
+ return;
+ }
+
+ log4(OP_MAPREAD, offset, size, 0);
+
+ if (testcalls <= simulatedopcount)
+ return;
+
+ if (!quiet && ((progressinterval &&
+ testcalls % progressinterval == 0) ||
+ (debug &&
+ (monitorstart == -1 ||
+ (offset + size > monitorstart &&
+ (monitorend == -1 || offset <= monitorend))))))
+ prt("%lu mapread\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls,
+ offset, offset + size - 1, size);
+
+ pg_offset = offset & page_mask;
+ map_size = pg_offset + size;
+
+ if ((p = (char *)mmap(0, map_size, PROT_READ, MAP_FILE | MAP_SHARED, fd,
+ (off_t)(offset - pg_offset))) == (char *)-1) {
+ prterr("domapread: mmap");
+ report_failure(190);
+ }
+ memcpy(temp_buf, p + pg_offset, size);
+
+ check_eofpage("Read", offset, p, size);
+
+ if (munmap(p, map_size) != 0) {
+ prterr("domapread: munmap");
+ report_failure(191);
+ }
+
+ check_buffers(offset, size);
+}
+
+
+void
+gendata(char *original_buf, char *good_buf, unsigned offset, unsigned size)
+{
+ while (size--) {
+ good_buf[offset] = testcalls % 256;
+ if (offset % 2)
+ good_buf[offset] += original_buf[offset];
+ offset++;
+ }
+}
+
+
+void
+dowrite(unsigned offset, unsigned size)
+{
+ off_t ret;
+ unsigned iret;
+
+ offset -= offset % writebdy;
+ if (size == 0) {
+ if (!quiet && testcalls > simulatedopcount)
+ prt("skipping zero size write\n");
+ log4(OP_SKIPPED, OP_WRITE, offset, size);
+ return;
+ }
+
+ log4(OP_WRITE, offset, size, file_size);
+
+ gendata(original_buf, good_buf, offset, size);
+ if (file_size < offset + size) {
+ if (file_size < offset)
+ memset(good_buf + file_size, '\0', offset - file_size);
+ file_size = offset + size;
+ if (lite) {
+ warn("Lite file size bug in fsx!");
+ report_failure(149);
+ }
+ }
+
+ if (testcalls <= simulatedopcount)
+ return;
+
+ if (!quiet && ((progressinterval &&
+ testcalls % progressinterval == 0) ||
+ (debug &&
+ (monitorstart == -1 ||
+ (offset + size > monitorstart &&
+ (monitorend == -1 || offset <= monitorend))))))
+ prt("%lu write\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls,
+ offset, offset + size - 1, size);
+ ret = lseek(fd, (off_t)offset, SEEK_SET);
+ if (ret == (off_t)-1) {
+ prterr("dowrite: lseek");
+ report_failure(150);
+ }
+ iret = write(fd, good_buf + offset, size);
+ if (iret != size) {
+ if (iret == -1)
+ prterr("dowrite: write");
+ else
+ prt("short write: 0x%x bytes instead of 0x%x\n",
+ iret, size);
+ report_failure(151);
+ }
+}
+
+
+void
+domapwrite(unsigned offset, unsigned size)
+{
+ unsigned pg_offset;
+ unsigned map_size;
+ off_t cur_filesize;
+ char *p;
+
+ offset -= offset % writebdy;
+ if (size == 0) {
+ if (!quiet && testcalls > simulatedopcount)
+ prt("skipping zero size write\n");
+ log4(OP_SKIPPED, OP_MAPWRITE, offset, size);
+ return;
+ }
+ cur_filesize = file_size;
+
+ log4(OP_MAPWRITE, offset, size, 0);
+
+ gendata(original_buf, good_buf, offset, size);
+ if (file_size < offset + size) {
+ if (file_size < offset)
+ memset(good_buf + file_size, '\0', offset - file_size);
+ file_size = offset + size;
+ if (lite) {
+ warn("Lite file size bug in fsx!");
+ report_failure(200);
+ }
+ }
+
+ if (testcalls <= simulatedopcount)
+ return;
+
+ if (!quiet && ((progressinterval &&
+ testcalls % progressinterval == 0) ||
+ (debug &&
+ (monitorstart == -1 ||
+ (offset + size > monitorstart &&
+ (monitorend == -1 || offset <= monitorend))))))
+ prt("%lu mapwrite\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls,
+ offset, offset + size - 1, size);
+
+ if (file_size > cur_filesize) {
+ if (ftruncate(fd, file_size) == -1) {
+ prterr("domapwrite: ftruncate");
+ exit(201);
+ }
+ }
+ pg_offset = offset & page_mask;
+ map_size = pg_offset + size;
+
+ if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE,
+ MAP_FILE | MAP_SHARED, fd,
+ (off_t)(offset - pg_offset))) == (char *)-1) {
+ prterr("domapwrite: mmap");
+ report_failure(202);
+ }
+ memcpy(p + pg_offset, good_buf + offset, size);
+ if (msync(p, map_size, 0) != 0) {
+ prterr("domapwrite: msync");
+ report_failure(203);
+ }
+
+ check_eofpage("Write", offset, p, size);
+
+ if (munmap(p, map_size) != 0) {
+ prterr("domapwrite: munmap");
+ report_failure(204);
+ }
+}
+
+
+void
+dotruncate(unsigned size)
+{
+ int oldsize = file_size;
+
+ size -= size % truncbdy;
+ if (size > biggest) {
+ biggest = size;
+ if (!quiet && testcalls > simulatedopcount)
+ prt("truncating to largest ever: 0x%x\n", size);
+ }
+
+ log4(OP_TRUNCATE, size, (unsigned)file_size, 0);
+
+ if (size > file_size)
+ memset(good_buf + file_size, '\0', size - file_size);
+ file_size = size;
+
+ if (testcalls <= simulatedopcount)
+ return;
+
+ if ((progressinterval && testcalls % progressinterval == 0) ||
+ (debug && (monitorstart == -1 || monitorend == -1 ||
+ size <= monitorend)))
+ prt("%lu trunc\tfrom 0x%x to 0x%x\n", testcalls, oldsize, size);
+ if (ftruncate(fd, (off_t)size) == -1) {
+ prt("ftruncate1: %x\n", size);
+ prterr("dotruncate: ftruncate");
+ report_failure(160);
+ }
+}
+
+
+void
+writefileimage()
+{
+ ssize_t iret;
+
+ if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) {
+ prterr("writefileimage: lseek");
+ report_failure(171);
+ }
+ iret = write(fd, good_buf, file_size);
+ if ((off_t)iret != file_size) {
+ if (iret == -1)
+ prterr("writefileimage: write");
+ else
+ prt("short write: 0x%x bytes instead of 0x%llx\n",
+ iret, (unsigned long long)file_size);
+ report_failure(172);
+ }
+ if (lite ? 0 : ftruncate(fd, file_size) == -1) {
+ prt("ftruncate2: %llx\n", (unsigned long long)file_size);
+ prterr("writefileimage: ftruncate");
+ report_failure(173);
+ }
+}
+
+
+void
+docloseopen(void)
+{
+ if (testcalls <= simulatedopcount)
+ return;
+
+ if (debug)
+ prt("%lu close/open\n", testcalls);
+ if (close(fd)) {
+ prterr("docloseopen: close");
+ report_failure(180);
+ }
+ fd = open(fname, O_RDWR, 0);
+ if (fd < 0) {
+ prterr("docloseopen: open");
+ report_failure(181);
+ }
+}
+
+
+void
+test(void)
+{
+ unsigned long offset;
+ unsigned long size = maxoplen;
+ unsigned long rv = random();
+ unsigned long op = rv % (3 + !lite + mapped_writes);
+
+ /* turn off the map read if necessary */
+
+ if (op == 2 && !mapped_reads)
+ op = 0;
+
+ if (simulatedopcount > 0 && testcalls == simulatedopcount)
+ writefileimage();
+
+ testcalls++;
+
+ if (closeprob)
+ closeopen = (rv >> 3) < (1 << 28) / closeprob;
+
+ if (debugstart > 0 && testcalls >= debugstart)
+ debug = 1;
+
+ if (!quiet && testcalls < simulatedopcount && testcalls % 100000 == 0)
+ prt("%lu...\n", testcalls);
+
+ /*
+ * READ: op = 0
+ * WRITE: op = 1
+ * MAPREAD: op = 2
+ * TRUNCATE: op = 3
+ * MAPWRITE: op = 3 or 4
+ */
+ if (lite ? 0 : op == 3 && style == 0) /* vanilla truncate? */
+ dotruncate(random() % maxfilelen);
+ else {
+ if (randomoplen)
+ size = random() % (maxoplen+1);
+ if (lite ? 0 : op == 3)
+ dotruncate(size);
+ else {
+ offset = random();
+ if (op == 1 || op == (lite ? 3 : 4)) {
+ offset %= maxfilelen;
+ if (offset + size > maxfilelen)
+ size = maxfilelen - offset;
+ if (op != 1)
+ domapwrite(offset, size);
+ else
+ dowrite(offset, size);
+ } else {
+ if (file_size)
+ offset %= file_size;
+ else
+ offset = 0;
+ if (offset + size > file_size)
+ size = file_size - offset;
+ if (op != 0)
+ domapread(offset, size);
+ else
+ doread(offset, size);
+ }
+ }
+ }
+ if (sizechecks && testcalls > simulatedopcount)
+ check_size();
+ if (closeopen)
+ docloseopen();
+}
+
+
+void
+cleanup(sig)
+ int sig;
+{
+ if (sig)
+ prt("signal %d\n", sig);
+ prt("testcalls = %lu\n", testcalls);
+ exit(sig);
+}
+
+
+void
+usage(void)
+{
+ fprintf(stdout, "usage: %s",
+ "fsx [-dnqLOW] [-b opnum] [-c Prob] [-l flen] [-m start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] fname\n\
+ -b opnum: beginning operation number (default 1)\n\
+ -c P: 1 in P chance of file close+open at each op (default infinity)\n\
+ -d: debug output for all operations\n\
+ -l flen: the upper bound on file size (default 262144)\n\
+ -m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\n\
+ -n: no verifications of file size\n\
+ -o oplen: the upper bound on operation size (default 65536)\n\
+ -p progressinterval: debug output at specified operation interval\n\
+ -q: quieter operation\n\
+ -r readbdy: 4096 would make reads page aligned (default 1)\n\
+ -s style: 1 gives smaller truncates (default 0)\n\
+ -t truncbdy: 4096 would make truncates page aligned (default 1)\n\
+ -w writebdy: 4096 would make writes page aligned (default 1)\n\
+ -D startingop: debug output starting at specified operation\n\
+ -L: fsxLite - no file creations & no file size changes\n\
+ -N numops: total # operations to do (default infinity)\n\
+ -O: use oplen (see -o flag) for every op (default random)\n\
+ -P dirpath: save .fsxlog and .fsxgood files in dirpath (default ./)\n\
+ -S seed: for random # generator (default 1) 0 gets timestamp\n\
+ -W: mapped write operations DISabled\n\
+ -R: mapped read operations DISabled)\n\
+ fname: this filename is REQUIRED (no default)\n");
+ exit(90);
+}
+
+
+int
+getnum(char *s, char **e)
+{
+ int ret = -1;
+
+ *e = (char *) 0;
+ ret = strtol(s, e, 0);
+ if (*e)
+ switch (**e) {
+ case 'b':
+ case 'B':
+ ret *= 512;
+ *e = *e + 1;
+ break;
+ case 'k':
+ case 'K':
+ ret *= 1024;
+ *e = *e + 1;
+ break;
+ case 'm':
+ case 'M':
+ ret *= 1024*1024;
+ *e = *e + 1;
+ break;
+ case 'w':
+ case 'W':
+ ret *= 4;
+ *e = *e + 1;
+ break;
+ }
+ return (ret);
+}
+
+
+int
+main(int argc, char **argv)
+{
+ int i, ch;
+ char *endp;
+ char goodfile[1024];
+ char logfile[1024];
+
+ goodfile[0] = 0;
+ logfile[0] = 0;
+
+ page_size = getpagesize();
+ page_mask = page_size - 1;
+
+ setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */
+
+ while ((ch = getopt(argc, argv, "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:W"))
+ != EOF)
+ switch (ch) {
+ case 'b':
+ simulatedopcount = getnum(optarg, &endp);
+ if (!quiet)
+ fprintf(stdout, "Will begin at operation %ld\n",
+ simulatedopcount);
+ if (simulatedopcount == 0)
+ usage();
+ simulatedopcount -= 1;
+ break;
+ case 'c':
+ closeprob = getnum(optarg, &endp);
+ if (!quiet)
+ fprintf(stdout,
+ "Chance of close/open is 1 in %d\n",
+ closeprob);
+ if (closeprob <= 0)
+ usage();
+ break;
+ case 'd':
+ debug = 1;
+ break;
+ case 'l':
+ maxfilelen = getnum(optarg, &endp);
+ if (maxfilelen <= 0)
+ usage();
+ break;
+ case 'm':
+ monitorstart = getnum(optarg, &endp);
+ if (monitorstart < 0)
+ usage();
+ if (!endp || *endp++ != ':')
+ usage();
+ monitorend = getnum(endp, &endp);
+ if (monitorend < 0)
+ usage();
+ if (monitorend == 0)
+ monitorend = -1; /* aka infinity */
+ debug = 1;
+ case 'n':
+ sizechecks = 0;
+ break;
+ case 'o':
+ maxoplen = getnum(optarg, &endp);
+ if (maxoplen <= 0)
+ usage();
+ break;
+ case 'p':
+ progressinterval = getnum(optarg, &endp);
+ if (progressinterval < 0)
+ usage();
+ break;
+ case 'q':
+ quiet = 1;
+ break;
+ case 'r':
+ readbdy = getnum(optarg, &endp);
+ if (readbdy <= 0)
+ usage();
+ break;
+ case 's':
+ style = getnum(optarg, &endp);
+ if (style < 0 || style > 1)
+ usage();
+ break;
+ case 't':
+ truncbdy = getnum(optarg, &endp);
+ if (truncbdy <= 0)
+ usage();
+ break;
+ case 'w':
+ writebdy = getnum(optarg, &endp);
+ if (writebdy <= 0)
+ usage();
+ break;
+ case 'D':
+ debugstart = getnum(optarg, &endp);
+ if (debugstart < 1)
+ usage();
+ break;
+ case 'L':
+ lite = 1;
+ break;
+ case 'N':
+ numops = getnum(optarg, &endp);
+ if (numops < 0)
+ usage();
+ break;
+ case 'O':
+ randomoplen = 0;
+ break;
+ case 'P':
+ strncpy(goodfile, optarg, sizeof(goodfile));
+ strcat(goodfile, "/");
+ strncpy(logfile, optarg, sizeof(logfile));
+ strcat(logfile, "/");
+ break;
+ case 'R':
+ mapped_reads = 0;
+ break;
+ case 'S':
+ seed = getnum(optarg, &endp);
+ if (seed == 0)
+ seed = time(0) % 10000;
+ if (!quiet)
+ fprintf(stdout, "Seed set to %d\n", seed);
+ if (seed < 0)
+ usage();
+ break;
+ case 'W':
+ mapped_writes = 0;
+ if (!quiet)
+ fprintf(stdout, "mapped writes DISABLED\n");
+ break;
+
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc != 1)
+ usage();
+ fname = argv[0];
+
+ signal(SIGHUP, cleanup);
+ signal(SIGINT, cleanup);
+ signal(SIGPIPE, cleanup);
+ signal(SIGALRM, cleanup);
+ signal(SIGTERM, cleanup);
+ signal(SIGXCPU, cleanup);
+ signal(SIGXFSZ, cleanup);
+ signal(SIGVTALRM, cleanup);
+ signal(SIGUSR1, cleanup);
+ signal(SIGUSR2, cleanup);
+
+ initstate(seed, state, 256);
+ setstate(state);
+ fd = open(fname, O_RDWR|(lite ? 0 : O_CREAT|O_TRUNC), 0666);
+ if (fd < 0) {
+ prterr(fname);
+ exit(91);
+ }
+ strncat(goodfile, fname, 256);
+ strcat (goodfile, ".fsxgood");
+ fsxgoodfd = open(goodfile, O_RDWR|O_CREAT|O_TRUNC, 0666);
+ if (fsxgoodfd < 0) {
+ prterr(goodfile);
+ exit(92);
+ }
+ strncat(logfile, fname, 256);
+ strcat (logfile, ".fsxlog");
+ fsxlogf = fopen(logfile, "w");
+ if (fsxlogf == NULL) {
+ prterr(logfile);
+ exit(93);
+ }
+ if (lite) {
+ off_t ret;
+ file_size = maxfilelen = lseek(fd, (off_t)0, SEEK_END);
+ if (file_size == (off_t)-1) {
+ prterr(fname);
+ warn("main: lseek eof");
+ exit(94);
+ }
+ ret = lseek(fd, (off_t)0, SEEK_SET);
+ if (ret == (off_t)-1) {
+ prterr(fname);
+ warn("main: lseek 0");
+ exit(95);
+ }
+ }
+ original_buf = (char *) malloc(maxfilelen);
+ for (i = 0; i < maxfilelen; i++)
+ original_buf[i] = random() % 256;
+ good_buf = (char *) malloc(maxfilelen);
+ memset(good_buf, '\0', maxfilelen);
+ temp_buf = (char *) malloc(maxoplen);
+ memset(temp_buf, '\0', maxoplen);
+ if (lite) { /* zero entire existing file */
+ ssize_t written;
+
+ written = write(fd, good_buf, (size_t)maxfilelen);
+ if (written != maxfilelen) {
+ if (written == -1) {
+ prterr(fname);
+ warn("main: error on write");
+ } else
+ warn("main: short write, 0x%x bytes instead of 0x%x\n",
+ (unsigned)written, maxfilelen);
+ exit(98);
+ }
+ } else
+ check_trunc_hack();
+
+ while (numops == -1 || numops--)
+ test();
+
+ if (close(fd)) {
+ prterr("close");
+ report_failure(99);
+ }
+ prt("All operations completed A-OK!\n");
+
+ exit(0);
+ return 0;
+}
+
diff --git a/tools/regression/gaithrstress/Makefile b/tools/regression/gaithrstress/Makefile
new file mode 100644
index 0000000..2506e01
--- /dev/null
+++ b/tools/regression/gaithrstress/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= gaithrstress
+LDADD+= -pthread
+
+NO_MAN=
+.include <bsd.prog.mk>
diff --git a/tools/regression/gaithrstress/gaithrstress.c b/tools/regression/gaithrstress/gaithrstress.c
new file mode 100644
index 0000000..023e0b5
--- /dev/null
+++ b/tools/regression/gaithrstress/gaithrstress.c
@@ -0,0 +1,276 @@
+/*-
+ * Copyright (c) 2004 Brian Fundakowski Feldman
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+
+#include <netinet/in.h>
+
+#include <err.h>
+#include <netdb.h>
+#include <pthread.h>
+#include <resolv.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/* Per-thread struct containing all important data. */
+struct worker {
+ pthread_t w_thread; /* self */
+ uintmax_t w_lookup_success, w_lookup_failure; /* getaddrinfo stats */
+ struct timespec w_max_lookup_time;
+};
+
+static volatile int workers_stop = 0;
+static double max_random_sleep = 1.0;
+static char **randwords;
+static size_t nrandwords;
+static const struct addrinfo *hints, hintipv4only = { .ai_family = AF_INET };
+
+/*
+ * We don't have good random(3)-type functions that are thread-safe,
+ * unfortunately.
+ */
+static u_int32_t
+my_arc4random_r(void)
+{
+ static pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;
+ u_int32_t ret;
+
+ (void)pthread_mutex_lock(&mymutex);
+ ret = arc4random();
+ (void)pthread_mutex_unlock(&mymutex);
+ return (ret);
+}
+
+static void
+randomsleep(double max_sleep_sec)
+{
+ struct timespec slptime = { 0, 0 };
+ double rndsleep;
+
+ rndsleep = (double)my_arc4random_r() / 4294967296.0 * max_sleep_sec;
+ while (rndsleep >= 1.0) {
+ slptime.tv_sec++;
+ rndsleep -= 1.0;
+ }
+ slptime.tv_nsec = rndsleep * 1e9;
+ (void)nanosleep(&slptime, NULL);
+}
+
+/*
+ * Start looking up arbitrary hostnames and record the successes/failures.
+ * Between lookups, sleep a random amount of time to make sure threads
+ * stay well out of synchronization.
+ *
+ * Host name: part probability
+ * ---- -----------
+ * www. 1/2
+ * random word always, equal
+ * random word 1/3, equal
+ * .(net|com|org) equal
+ */
+static void *
+work(void *arg)
+{
+ struct worker *w = arg;
+
+ /* Turn off domain name list searching as much as possible. */
+ if (_res.options & RES_INIT || res_init() == 0)
+ _res.options &= ~RES_DNSRCH;
+ do {
+ const char *suffixes[] = { "net", "com", "org" };
+ const size_t nsuffixes = sizeof(suffixes) / sizeof(suffixes[0]);
+ struct timespec ts_begintime, ts_total;
+ struct addrinfo *res;
+ char *hostname;
+ int error;
+
+ randomsleep(max_random_sleep);
+ if (asprintf(&hostname, "%s%s%s.%s",
+ (my_arc4random_r() % 2) == 0 ? "www." : "",
+ randwords[my_arc4random_r() % nrandwords],
+ (my_arc4random_r() % 3) == 0 ?
+ randwords[my_arc4random_r() % nrandwords] : "",
+ suffixes[my_arc4random_r() % nsuffixes]) == -1)
+ continue;
+ (void)clock_gettime(CLOCK_REALTIME, &ts_begintime);
+ error = getaddrinfo(hostname, NULL, hints, &res);
+ (void)clock_gettime(CLOCK_REALTIME, &ts_total);
+ ts_total.tv_sec -= ts_begintime.tv_sec;
+ ts_total.tv_nsec -= ts_begintime.tv_nsec;
+ if (ts_total.tv_nsec < 0) {
+ ts_total.tv_sec--;
+ ts_total.tv_nsec += 1000000000;
+ }
+ if (ts_total.tv_sec > w->w_max_lookup_time.tv_sec ||
+ (ts_total.tv_sec == w->w_max_lookup_time.tv_sec &&
+ ts_total.tv_nsec > w->w_max_lookup_time.tv_sec))
+ w->w_max_lookup_time = ts_total;
+ free(hostname);
+ if (error == 0) {
+ w->w_lookup_success++;
+ freeaddrinfo(res);
+ } else {
+ w->w_lookup_failure++;
+ }
+ } while (!workers_stop);
+
+ pthread_exit(NULL);
+}
+
+int
+dowordfile(const char *fname)
+{
+ FILE *fp;
+ char newword[64];
+ size_t n;
+
+ fp = fopen(fname, "r");
+ if (fp == NULL)
+ return (-1);
+ nrandwords = 0;
+ while (fgets(newword, sizeof(newword), fp) != NULL)
+ nrandwords++;
+ if (ferror(fp) || fseek(fp, 0, SEEK_SET) != 0)
+ goto fail;
+ randwords = calloc(nrandwords, sizeof(char *));
+ if (randwords == NULL)
+ goto fail;
+ n = nrandwords;
+ nrandwords = 0;
+ while (fgets(newword, sizeof(newword), fp) != NULL) {
+ newword[strcspn(newword, "\r\n")] = '\0';
+ randwords[nrandwords] = strdup(newword);
+ if (randwords[nrandwords] == NULL)
+ err(1, "reading words file");
+ if (++nrandwords == n)
+ break;
+ }
+ nrandwords = n;
+ fclose(fp);
+ return (0);
+fail:
+ fclose(fp);
+ return (-1);
+}
+
+int
+main(int argc, char **argv) {
+ unsigned long nworkers = 1;
+ struct worker *workers;
+ size_t i;
+ char waiting[3], *send, *wordfile = "/usr/share/dict/words";
+ int ch;
+
+ if (getprogname() == NULL)
+ setprogname(argv[0]);
+ printf("%s: threaded stress-tester for getaddrinfo(3)\n",
+ getprogname());
+ printf("(c) 2004 Brian Feldman <green@FreeBSD.org>\n");
+ while ((ch = getopt(argc, argv, "4s:t:w:")) != -1) {
+ switch (ch) {
+ case '4':
+ hints = &hintipv4only;
+ break;
+ case 's':
+ max_random_sleep = strtod(optarg, &send);
+ if (*send != '\0')
+ goto usage;
+ break;
+ case 't':
+ nworkers = strtoul(optarg, &send, 0);
+ if (*send != '\0')
+ goto usage;
+ break;
+ case 'w':
+ wordfile = optarg;
+ break;
+ default:
+usage:
+ fprintf(stderr, "usage: %s [-4] [-s sleep] "
+ "[-t threads] [-w wordfile]\n", getprogname());
+ exit(2);
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (nworkers < 1 || nworkers != (size_t)nworkers)
+ goto usage;
+ if (dowordfile(wordfile) == -1)
+ err(1, "reading word file %s", wordfile);
+ if (nrandwords < 1)
+ errx(1, "word file %s did not have >0 words", wordfile);
+ printf("Read %u random words from %s.\n", nrandwords, wordfile);
+ workers = calloc(nworkers, sizeof(*workers));
+ if (workers == NULL)
+ err(1, "allocating workers");
+ printf("Intra-query delay time is from 0 to %g seconds (random).\n",
+ max_random_sleep);
+
+ printf("Starting %lu worker%.*s: ", nworkers, nworkers > 1, "s");
+ fflush(stdout);
+ for (i = 0; i < nworkers; i++) {
+ if (pthread_create(&workers[i].w_thread, NULL, work,
+ &workers[i]) == -1)
+ err(1, "creating worker %u", i);
+ printf("%u%s", i, i == nworkers - 1 ? ".\n" : ", ");
+ fflush(stdout);
+ }
+
+ printf("<Press enter key to end test.>\n");
+ (void)fgets(waiting, sizeof(waiting), stdin);
+ workers_stop = 1;
+
+ printf("Stopping %lu worker%.*s: ", nworkers, nworkers > 1, "s");
+ fflush(stdout);
+ for (i = 0; i < nworkers; i++) {
+ pthread_join(workers[i].w_thread, NULL);
+ printf("%u%s", i, i == nworkers - 1 ? ".\n" : ", ");
+ fflush(stdout);
+ }
+
+ printf("%-10s%-20s%-20s%-29s\n", "Worker", "Successful GAI",
+ "Failed GAI", "Max resolution time (M:SS*)");
+ printf("%-10s%-20s%-20s%-29s\n", "------", "--------------",
+ "----------", "---------------------------");
+ for (i = 0; i < nworkers; i++) {
+ printf("%-10u%-20ju%-20ju%u:%s%.2f\n", i,
+ workers[i].w_lookup_success, workers[i].w_lookup_failure,
+ workers[i].w_max_lookup_time.tv_sec / 60,
+ workers[i].w_max_lookup_time.tv_sec % 60 < 10 ? "0" : "",
+ (double)(workers[i].w_max_lookup_time.tv_sec % 60) +
+ (double)workers[i].w_max_lookup_time.tv_nsec / 1e9);
+ }
+
+ exit(0);
+}
diff --git a/tools/regression/geom/ConfCmp/ConfCmp.c b/tools/regression/geom/ConfCmp/ConfCmp.c
new file mode 100644
index 0000000..1ddf502
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/ConfCmp.c
@@ -0,0 +1,377 @@
+/*-
+ * Copyright (c) 2002 Poul-Henning Kamp
+ * Copyright (c) 2002 Networks Associates Technology, Inc.
+ * All rights reserved.
+ *
+ * This software was developed for the FreeBSD Project by Poul-Henning Kamp
+ * and NAI Labs, the Security Research Division of Network Associates, Inc.
+ * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the
+ * DARPA CHATS research program.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The names of the authors may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <sys/queue.h>
+#include <sys/sbuf.h>
+#include <err.h>
+#include <bsdxml.h>
+
+FILE *fsubs;
+
+struct node {
+ LIST_HEAD(, node) children;
+ LIST_ENTRY(node) siblings;
+ struct node *parent;
+ const char *name;
+ struct sbuf *cont;
+ struct sbuf *key;
+ char *id;
+ char *ref;
+};
+
+struct mytree {
+ struct node *top;
+ struct node *cur;
+ int indent;
+ int ignore;
+};
+
+struct ref {
+ LIST_ENTRY(ref) next;
+ char *k1;
+ char *k2;
+};
+
+LIST_HEAD(, ref) refs = LIST_HEAD_INITIALIZER(&refs);
+
+static struct node *
+new_node(void)
+{
+ struct node *np;
+
+ np = calloc(1, sizeof *np);
+ np->cont = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND);
+ sbuf_clear(np->cont);
+ np->key = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND);
+ sbuf_clear(np->key);
+ LIST_INIT(&np->children);
+ return (np);
+}
+
+static void
+indent(int n)
+{
+
+ printf("%*.*s", n, n, "");
+}
+
+static void
+StartElement(void *userData, const char *name, const char **attr)
+{
+ struct mytree *mt;
+ struct node *np;
+ int i;
+
+ mt = userData;
+ if (!strcmp(name, "FreeBSD")) {
+ mt->ignore = 1;
+ return;
+ }
+ mt->ignore = 0;
+ mt->indent += 2;
+ np = new_node();
+ for (i = 0; attr[i]; i += 2) {
+ if (!strcmp(attr[i], "id"))
+ np->id = strdup(attr[i+1]);
+ else if (!strcmp(attr[i], "ref"))
+ np->ref = strdup(attr[i+1]);
+ }
+ np->name = strdup(name);
+ sbuf_cat(np->key, name);
+ sbuf_cat(np->key, "::");
+ np->parent = mt->cur;
+ LIST_INSERT_HEAD(&mt->cur->children, np, siblings);
+ mt->cur = np;
+}
+
+static void
+EndElement(void *userData, const char *name __unused)
+{
+ struct mytree *mt;
+ struct node *np;
+
+ mt = userData;
+ if (mt->ignore)
+ return;
+
+ mt->indent -= 2;
+ sbuf_finish(mt->cur->cont);
+ LIST_FOREACH(np, &mt->cur->children, siblings) {
+ if (strcmp(np->name, "name"))
+ continue;
+ sbuf_cat(mt->cur->key, sbuf_data(np->cont));
+ break;
+ }
+ sbuf_finish(mt->cur->key);
+ mt->cur = mt->cur->parent;
+}
+
+static void
+CharData(void *userData , const XML_Char *s , int len)
+{
+ struct mytree *mt;
+ const char *b, *e;
+
+ mt = userData;
+ if (mt->ignore)
+ return;
+ b = s;
+ e = s + len - 1;
+ while (isspace(*b) && b < e)
+ b++;
+ while (isspace(*e) && e > b)
+ e--;
+ if (e != b || *b)
+ sbuf_bcat(mt->cur->cont, b, e - b + 1);
+}
+
+static struct mytree *
+dofile(char *filename)
+{
+ XML_Parser parser;
+ struct mytree *mt;
+ struct stat st;
+ int fd;
+ char *p;
+ int i;
+
+ parser = XML_ParserCreate(NULL);
+ mt = calloc(1, sizeof *mt);
+ mt->top = new_node();
+ mt->top->name = "(top)";
+ mt->top->parent = mt->top;
+ mt->cur = mt->top;
+ sbuf_finish(mt->top->key);
+ sbuf_finish(mt->top->cont);
+ XML_SetUserData(parser, mt);
+ XML_SetElementHandler(parser, StartElement, EndElement);
+ XML_SetCharacterDataHandler(parser, CharData);
+ fd = open(filename, O_RDONLY);
+ if (fd < 0)
+ err(1, filename);
+ fstat(fd, &st);
+ p = mmap(NULL, st.st_size, PROT_READ, MAP_NOCORE|MAP_PRIVATE, fd, 0);
+ i = XML_Parse(parser, p, st.st_size, 1);
+ if (i != 1)
+ errx(1, "XML_Parse complained -> %d", i);
+ munmap(p, st.st_size);
+ close(fd);
+ XML_ParserFree(parser);
+ sbuf_finish(mt->top->cont);
+ if (i)
+ return (mt);
+ else
+ return (NULL);
+}
+
+static void
+print_node(struct node *np)
+{
+ printf("\"%s\" -- \"%s\" -- \"%s\"", np->name, sbuf_data(np->cont), sbuf_data(np->key));
+ if (np->id)
+ printf(" id=\"%s\"", np->id);
+ if (np->ref)
+ printf(" ref=\"%s\"", np->ref);
+ printf("\n");
+}
+
+static void
+print_tree(struct node *np, int n)
+{
+ struct node *np1;
+
+ indent(n); printf("%s id=%s ref=%s\n", np->name, np->id, np->ref);
+ LIST_FOREACH(np1, &np->children, siblings)
+ print_tree(np1, n + 2);
+}
+
+static void
+sort_node(struct node *np)
+{
+ struct node *np1, *np2;
+ int n;
+
+ LIST_FOREACH(np1, &np->children, siblings)
+ sort_node(np1);
+ do {
+ np1 = LIST_FIRST(&np->children);
+ n = 0;
+ for (;;) {
+ if (np1 == NULL)
+ return;
+ np2 = LIST_NEXT(np1, siblings);
+ if (np2 == NULL)
+ return;
+ if (strcmp(sbuf_data(np1->key), sbuf_data(np2->key)) > 0) {
+ LIST_REMOVE(np2, siblings);
+ LIST_INSERT_BEFORE(np1, np2, siblings);
+ n++;
+ break;
+ }
+ np1 = np2;
+ }
+ } while (n);
+}
+
+static int
+refcmp(char *r1, char *r2)
+{
+ struct ref *r;
+
+ LIST_FOREACH(r, &refs, next) {
+ if (!strcmp(r1, r->k1))
+ return (strcmp(r2, r->k2));
+ }
+ r = calloc(1, sizeof(*r));
+ r->k1 = strdup(r1);
+ r->k2 = strdup(r2);
+ LIST_INSERT_HEAD(&refs, r, next);
+ if (fsubs != NULL) {
+ fprintf(fsubs, "s/%s/%s/g\n", r1, r2);
+ fflush(fsubs);
+ }
+ return (0);
+}
+
+static int compare_node2(struct node *n1, struct node *n2, int in);
+
+static int
+compare_node(struct node *n1, struct node *n2, int in)
+{
+ int i;
+ struct node *n1a, *n2a;
+
+ i = strcmp(n1->name, n2->name);
+ if (i)
+ return (i);
+ if (n1->id && n2->id)
+ i = refcmp(n1->id, n2->id);
+ else if (n1->id || n2->id)
+ i = -1;
+ if (i)
+ return (i);
+ if (n1->ref && n2->ref)
+ i = refcmp(n1->ref, n2->ref);
+ else if (n1->ref || n2->ref)
+ i = -1;
+ if (i)
+ return (i);
+ if (!strcmp(n1->name, "ref"))
+ i = refcmp(sbuf_data(n1->cont), sbuf_data(n2->cont));
+ else
+ i = strcmp(sbuf_data(n1->cont), sbuf_data(n2->cont));
+ if (i)
+ return (1);
+ n1a = LIST_FIRST(&n1->children);
+ n2a = LIST_FIRST(&n2->children);
+ for (;;) {
+ if (n1a == NULL && n2a == NULL)
+ return (0);
+ if (n1a != NULL && n2a == NULL) {
+ printf("1>");
+ indent(in);
+ print_node(n1a);
+ printf("2>\n");
+ return (1);
+ }
+ if (n1a == NULL && n2a != NULL) {
+ printf("1>\n");
+ printf("2>");
+ indent(in);
+ print_node(n2a);
+ return (1);
+ }
+ i = compare_node2(n1a, n2a, in + 2);
+ if (i)
+ return (1);
+ n1a = LIST_NEXT(n1a, siblings);
+ n2a = LIST_NEXT(n2a, siblings);
+ }
+ return (0);
+}
+
+static int
+compare_node2(struct node *n1, struct node *n2, int in)
+{
+ int i;
+
+ i = compare_node(n1, n2, in);
+ if (i) {
+ printf("1>");
+ indent(in);
+ print_node(n1);
+ printf("2>");
+ indent(in);
+ print_node(n2);
+ }
+ return (i);
+}
+
+
+
+int
+main(int argc, char **argv)
+{
+ struct mytree *t1, *t2;
+ int i;
+
+ fsubs = fopen("_.subs", "w");
+ setbuf(stdout, NULL);
+ setbuf(stderr, NULL);
+ if (argc != 3)
+ errx(1, "usage: %s file1 file2", argv[0]);
+
+ t1 = dofile(argv[1]);
+ if (t1 == NULL)
+ errx(2, "XML parser error on file %s", argv[1]);
+ sort_node(t1->top);
+ t2 = dofile(argv[2]);
+ if (t2 == NULL)
+ errx(2, "XML parser error on file %s", argv[2]);
+ sort_node(t2->top);
+ i = compare_node(t1->top, t2->top, 0);
+ return (i);
+}
+
diff --git a/tools/regression/geom/ConfCmp/Makefile b/tools/regression/geom/ConfCmp/Makefile
new file mode 100644
index 0000000..3be5e70f1
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/Makefile
@@ -0,0 +1,35 @@
+# $FreeBSD$
+
+PROG= ConfCmp
+SRCS+= ConfCmp.c
+SRCS+= subr_sbuf.c
+
+.PATH: ../../../../sys/kern
+
+NO_OBJ=
+WARNS?= 5
+CFLAGS+= -g -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -static
+# Uncomment for ElectricFence
+#LDADD += -lefence -L/usr/local/lib
+
+DPADD += ${LIBBSDXML}
+LDADD += -lbsdxml
+
+NO_MAN=
+CLEANFILES += _*
+
+.include <bsd.prog.mk>
+
+test: ${PROG}
+ rm -f _* *.core
+ ./${PROG} a1.conf a1.conf
+ ./${PROG} a1.conf a1a.conf
+ if ./${PROG} a1.conf a1b.conf > /dev/null 2>&1 ; then exit 1 ; fi
+ if ./${PROG} a1.conf a1c.conf > /dev/null 2>&1 ; then exit 1 ; fi
+ if ./${PROG} a1.conf a1d.conf > /dev/null 2>&1 ; then exit 1 ; fi
+ ./${PROG} a2.conf a2.conf
+ ./${PROG} a2.conf a2a.conf
+ if ./${PROG} a2.conf a2b.conf > /dev/null 2>&1 ; then exit 1 ; fi
+ if ./${PROG} a2.conf a2c.conf > /dev/null 2>&1 ; then exit 1 ; fi
+ if ./${PROG} a2.conf a2d.conf > /dev/null 2>&1 ; then exit 1 ; fi
+
diff --git a/tools/regression/geom/ConfCmp/a1.conf b/tools/regression/geom/ConfCmp/a1.conf
new file mode 100644
index 0000000..94171cd
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a1.conf
@@ -0,0 +1,414 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <method>
+ <ref>0x80712c0</ref>
+ <name>DEV-method</name>
+ <geom>
+ <ref>0x80bfd00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3d</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9500</ref>
+ <geom><ref>0x80bfd00</ref></geom>
+ <provider><ref>0x80bf880</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfc80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b94c0</ref>
+ <geom><ref>0x80bfc80</ref></geom>
+ <provider><ref>0x80bf800</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfc00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9480</ref>
+ <geom><ref>0x80bfc00</ref></geom>
+ <provider><ref>0x80bf780</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfb80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s2c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9440</ref>
+ <geom><ref>0x80bfb80</ref></geom>
+ <provider><ref>0x80bf600</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfb00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1f</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9400</ref>
+ <geom><ref>0x80bfb00</ref></geom>
+ <provider><ref>0x80bf480</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfa80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1e</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b93c0</ref>
+ <geom><ref>0x80bfa80</ref></geom>
+ <provider><ref>0x80bf400</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfa00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9380</ref>
+ <geom><ref>0x80bfa00</ref></geom>
+ <provider><ref>0x80bf380</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf980</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1b</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9340</ref>
+ <geom><ref>0x80bf980</ref></geom>
+ <provider><ref>0x80bf300</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf900</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9300</ref>
+ <geom><ref>0x80bf900</ref></geom>
+ <provider><ref>0x80bf280</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf680</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9280</ref>
+ <geom><ref>0x80bf680</ref></geom>
+ <provider><ref>0x80bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf500</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9200</ref>
+ <geom><ref>0x80bf500</ref></geom>
+ <provider><ref>0x80bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf180</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9180</ref>
+ <geom><ref>0x80bf180</ref></geom>
+ <provider><ref>0x80bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80b9080</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <consumer>
+ <ref>0x80b90c0</ref>
+ <geom><ref>0x80b9080</ref></geom>
+ <provider><ref>0x80b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </method>
+ <method>
+ <ref>0x8071280</ref>
+ <name>MBREXT-method</name>
+ </method>
+ <method>
+ <ref>0x8071260</ref>
+ <name>MBR-method</name>
+ <geom>
+ <ref>0x80b9100</ref>
+ <method><ref>0x8071260</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b9140</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <provider><ref>0x80b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf100</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf080</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2</name>
+ <config>
+ <index>1</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf000</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1</name>
+ <config>
+ <index>0</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x80712a0</ref>
+ <name>BSD-method</name>
+ <geom>
+ <ref>0x80bf700</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b92c0</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <provider><ref>0x80bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf880</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3d</name>
+ <config>
+ <index>3</index>
+ <length>6488104960</length>
+ <seclength>12672080</seclength>
+ <offset>10682408960</offset>
+ <secoffset>20864080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf800</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3c</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf780</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3a</name>
+ <config>
+ <index>0</index>
+ <length>2097152000</length>
+ <seclength>4096000</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x80bf580</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b9240</ref>
+ <geom><ref>0x80bf580</ref></geom>
+ <provider><ref>0x80bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf600</ref>
+ <geom><ref>0x80bf580</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2c</name>
+ <config>
+ <index>2</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x80bf200</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b91c0</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <provider><ref>0x80bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf480</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1f</name>
+ <config>
+ <index>5</index>
+ <length>2066973184</length>
+ <seclength>4037057</seclength>
+ <offset>1153465856</offset>
+ <secoffset>2252863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf400</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1e</name>
+ <config>
+ <index>4</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>629177856</offset>
+ <secoffset>1228863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf380</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1c</name>
+ <config>
+ <index>2</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf300</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1b</name>
+ <config>
+ <index>1</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>104889856</offset>
+ <secoffset>204863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf280</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1a</name>
+ <config>
+ <index>0</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x80711c0</ref>
+ <name>SIMDISK-method</name>
+ <geom>
+ <ref>0x80b9000</ref>
+ <method><ref>0x80711c0</ref></method>
+ <name>ad0</name>
+ <rank>1</rank>
+ <provider>
+ <ref>0x80b9040</ref>
+ <geom><ref>0x80b9000</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0</name>
+ </provider>
+ </geom>
+ </method>
+</mesh>
diff --git a/tools/regression/geom/ConfCmp/a1a.conf b/tools/regression/geom/ConfCmp/a1a.conf
new file mode 100644
index 0000000..01110f3
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a1a.conf
@@ -0,0 +1,414 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <method>
+ <ref>0x90712c0</ref>
+ <name>DEV-method</name>
+ <geom>
+ <ref>0x90bfd00</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s3d</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x90b9500</ref>
+ <geom><ref>0x90bfd00</ref></geom>
+ <provider><ref>0x90bf880</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bfc80</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s3c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x90b94c0</ref>
+ <geom><ref>0x90bfc80</ref></geom>
+ <provider><ref>0x90bf800</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bfc00</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s3a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x90b9480</ref>
+ <geom><ref>0x90bfc00</ref></geom>
+ <provider><ref>0x90bf780</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bfb80</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s2c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x90b9440</ref>
+ <geom><ref>0x90bfb80</ref></geom>
+ <provider><ref>0x90bf600</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bfb00</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s1f</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x90b9400</ref>
+ <geom><ref>0x90bfb00</ref></geom>
+ <provider><ref>0x90bf480</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bfa80</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s1e</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x90b93c0</ref>
+ <geom><ref>0x90bfa80</ref></geom>
+ <provider><ref>0x90bf400</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bfa00</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s1c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x90b9380</ref>
+ <geom><ref>0x90bfa00</ref></geom>
+ <provider><ref>0x90bf380</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bf980</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s1b</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x90b9340</ref>
+ <geom><ref>0x90bf980</ref></geom>
+ <provider><ref>0x90bf300</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bf900</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s1a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x90b9300</ref>
+ <geom><ref>0x90bf900</ref></geom>
+ <provider><ref>0x90bf280</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bf680</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x90b9280</ref>
+ <geom><ref>0x90bf680</ref></geom>
+ <provider><ref>0x90bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bf500</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x90b9200</ref>
+ <geom><ref>0x90bf500</ref></geom>
+ <provider><ref>0x90bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90bf180</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x90b9180</ref>
+ <geom><ref>0x90bf180</ref></geom>
+ <provider><ref>0x90bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x90b9080</ref>
+ <method><ref>0x90712c0</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <consumer>
+ <ref>0x90b90c0</ref>
+ <geom><ref>0x90b9080</ref></geom>
+ <provider><ref>0x90b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </method>
+ <method>
+ <ref>0x9071280</ref>
+ <name>MBREXT-method</name>
+ </method>
+ <method>
+ <ref>0x9071260</ref>
+ <name>MBR-method</name>
+ <geom>
+ <ref>0x90b9100</ref>
+ <method><ref>0x9071260</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x90b9140</ref>
+ <geom><ref>0x90b9100</ref></geom>
+ <provider><ref>0x90b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x90bf100</ref>
+ <geom><ref>0x90b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x90bf080</ref>
+ <geom><ref>0x90b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2</name>
+ <config>
+ <index>1</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x90bf000</ref>
+ <geom><ref>0x90b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1</name>
+ <config>
+ <index>0</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x90712a0</ref>
+ <name>BSD-method</name>
+ <geom>
+ <ref>0x90bf700</ref>
+ <method><ref>0x90712a0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x90b92c0</ref>
+ <geom><ref>0x90bf700</ref></geom>
+ <provider><ref>0x90bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x90bf880</ref>
+ <geom><ref>0x90bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3d</name>
+ <config>
+ <index>3</index>
+ <length>6488104960</length>
+ <seclength>12672080</seclength>
+ <offset>10682408960</offset>
+ <secoffset>20864080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x90bf800</ref>
+ <geom><ref>0x90bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3c</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x90bf780</ref>
+ <geom><ref>0x90bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3a</name>
+ <config>
+ <index>0</index>
+ <length>2097152000</length>
+ <seclength>4096000</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x90bf580</ref>
+ <method><ref>0x90712a0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x90b9240</ref>
+ <geom><ref>0x90bf580</ref></geom>
+ <provider><ref>0x90bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x90bf600</ref>
+ <geom><ref>0x90bf580</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2c</name>
+ <config>
+ <index>2</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x90bf200</ref>
+ <method><ref>0x90712a0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x90b91c0</ref>
+ <geom><ref>0x90bf200</ref></geom>
+ <provider><ref>0x90bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x90bf480</ref>
+ <geom><ref>0x90bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1f</name>
+ <config>
+ <index>5</index>
+ <length>2066973184</length>
+ <seclength>4037057</seclength>
+ <offset>1153465856</offset>
+ <secoffset>2252863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x90bf400</ref>
+ <geom><ref>0x90bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1e</name>
+ <config>
+ <index>4</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>629177856</offset>
+ <secoffset>1228863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x90bf380</ref>
+ <geom><ref>0x90bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1c</name>
+ <config>
+ <index>2</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x90bf300</ref>
+ <geom><ref>0x90bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1b</name>
+ <config>
+ <index>1</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>104889856</offset>
+ <secoffset>204863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x90bf280</ref>
+ <geom><ref>0x90bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1a</name>
+ <config>
+ <index>0</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x90711c0</ref>
+ <name>SIMDISK-method</name>
+ <geom>
+ <ref>0x90b9000</ref>
+ <method><ref>0x90711c0</ref></method>
+ <name>ad0</name>
+ <rank>1</rank>
+ <provider>
+ <ref>0x90b9040</ref>
+ <geom><ref>0x90b9000</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0</name>
+ </provider>
+ </geom>
+ </method>
+</mesh>
diff --git a/tools/regression/geom/ConfCmp/a1b.conf b/tools/regression/geom/ConfCmp/a1b.conf
new file mode 100644
index 0000000..46f423b
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a1b.conf
@@ -0,0 +1,414 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <method>
+ <ref>0x80712c0</ref>
+ <name>DEV-method</name>
+ <geom>
+ <ref>0x80bfd00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3d</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9500</ref>
+ <geom><ref>0x80bfd00</ref></geom>
+ <provider><ref>0x80bf880</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfc80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b94c0</ref>
+ <geom><ref>0x80bfc80</ref></geom>
+ <provider><ref>0x80bf800</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfc00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9480</ref>
+ <geom><ref>0x80bfc00</ref></geom>
+ <provider><ref>0x80bf780</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfb80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s2c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9440</ref>
+ <geom><ref>0x80bfb80</ref></geom>
+ <provider><ref>0x80bf600</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfb00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1f</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9400</ref>
+ <geom><ref>0x80bfb00</ref></geom>
+ <provider><ref>0x80bf480</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfa80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1e</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b93c0</ref>
+ <geom><ref>0x80bfa80</ref></geom>
+ <provider><ref>0x80bf400</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfa00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9380</ref>
+ <geom><ref>0x80bfa00</ref></geom>
+ <provider><ref>0x80bf380</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf980</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1b</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9340</ref>
+ <geom><ref>0x80bf980</ref></geom>
+ <provider><ref>0x80bf300</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf900</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9300</ref>
+ <geom><ref>0x80bf900</ref></geom>
+ <provider><ref>0x80bf280</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf680</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9280</ref>
+ <geom><ref>0x80bf680</ref></geom>
+ <provider><ref>0x80bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf500</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9200</ref>
+ <geom><ref>0x80bf500</ref></geom>
+ <provider><ref>0x80bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf180</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9180</ref>
+ <geom><ref>0x80bf180</ref></geom>
+ <provider><ref>0x80bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80b9080</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <consumer>
+ <ref>0x80b90c0</ref>
+ <geom><ref>0x80b9080</ref></geom>
+ <provider><ref>0x80b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </method>
+ <method>
+ <ref>0x8071280</ref>
+ <name>MBREXT-method</name>
+ </method>
+ <method>
+ <ref>0x8071260</ref>
+ <name>MBR-method</name>
+ <geom>
+ <ref>0x80b9100</ref>
+ <method><ref>0x8071260</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b9140</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <provider><ref>0x80b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf100</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf080</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2</name>
+ <config>
+ <index>1</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf000</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1</name>
+ <config>
+ <index>0</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x80712a0</ref>
+ <name>BSD-method</name>
+ <geom>
+ <ref>0x80bf700</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b92c0</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <provider><ref>0x80bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf880</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3d</name>
+ <config>
+ <index>3</index>
+ <length>6488104960</length>
+ <seclength>12672080</seclength>
+ <offset>10682408960</offset>
+ <secoffset>20864080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf800</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3c</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf780</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3a</name>
+ <config>
+ <index>0</index>
+ <length>2097152000</length>
+ <seclength>4096000</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x80bf580</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b9240</ref>
+ <geom><ref>0x80bf580</ref></geom>
+ <provider><ref>0x80bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf600</ref>
+ <geom><ref>0x80bf580</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2c</name>
+ <config>
+ <index>2</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x80bf200</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b91c0</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <provider><ref>0x80bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf480</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1f</name>
+ <config>
+ <index>5</index>
+ <length>2066973184</length>
+ <seclength>4037057</seclength>
+ <offset>1153465856</offset>
+ <secoffset>2252863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf400</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1e</name>
+ <config>
+ <index>4</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>629177856</offset>
+ <secoffset>1228863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf380</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1c</name>
+ <config>
+ <index>2</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf300</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1b</name>
+ <config>
+ <index>1</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>104889856</offset>
+ <secoffset>204863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf280</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1a</name>
+ <config>
+ <index>0</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x80711c0</ref>
+ <name>SIMDISK-method</name>
+ <geom>
+ <ref>0x80b9000</ref>
+ <method><ref>0x80711c0</ref></method>
+ <name>ad0</name>
+ <rank>1</rank>
+ <provider>
+ <ref>0x80b9041</ref>
+ <geom><ref>0x80b9000</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0</name>
+ </provider>
+ </geom>
+ </method>
+</mesh>
diff --git a/tools/regression/geom/ConfCmp/a1c.conf b/tools/regression/geom/ConfCmp/a1c.conf
new file mode 100644
index 0000000..1b5a2b9
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a1c.conf
@@ -0,0 +1,414 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <method>
+ <ref>0x80712c0</ref>
+ <name>DEV-method</name>
+ <geom>
+ <ref>0x80bfd00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3d</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9500</ref>
+ <geom><ref>0x80bfd00</ref></geom>
+ <provider><ref>0x80bf880</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfc80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b94c0</ref>
+ <geom><ref>0x80bfc80</ref></geom>
+ <provider><ref>0x80bf800</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfc00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9480</ref>
+ <geom><ref>0x80bfc00</ref></geom>
+ <provider><ref>0x80bf780</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfb80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s2c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9440</ref>
+ <geom><ref>0x80bfb80</ref></geom>
+ <provider><ref>0x80bf600</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfb00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1f</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9400</ref>
+ <geom><ref>0x80bfb00</ref></geom>
+ <provider><ref>0x80bf480</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfa80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1e</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b93c0</ref>
+ <geom><ref>0x80bfa80</ref></geom>
+ <provider><ref>0x80bf400</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfa00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9380</ref>
+ <geom><ref>0x80bfa00</ref></geom>
+ <provider><ref>0x80bf380</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf980</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1b</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9340</ref>
+ <geom><ref>0x80bf980</ref></geom>
+ <provider><ref>0x80bf300</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf900</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9300</ref>
+ <geom><ref>0x80bf900</ref></geom>
+ <provider><ref>0x80bf280</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf680</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9280</ref>
+ <geom><ref>0x80bf680</ref></geom>
+ <provider><ref>0x80bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf500</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9200</ref>
+ <geom><ref>0x80bf500</ref></geom>
+ <provider><ref>0x80bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf180</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9180</ref>
+ <geom><ref>0x80bf180</ref></geom>
+ <provider><ref>0x80bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80b9080</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <consumer>
+ <ref>0x80b90c0</ref>
+ <geom><ref>0x80b9080</ref></geom>
+ <provider><ref>0x80b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </method>
+ <method>
+ <ref>0x8071280</ref>
+ <name>MBREXT-method</name>
+ </method>
+ <method>
+ <ref>0x8071260</ref>
+ <name>MBR-method</name>
+ <geom>
+ <ref>0x80b9100</ref>
+ <method><ref>0x8071260</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b9140</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <provider><ref>0x80b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf100</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf080</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2</name>
+ <config>
+ <index>1</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf000</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1</name>
+ <config>
+ <index>0</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x80712a0</ref>
+ <name>BSD-method</name>
+ <geom>
+ <ref>0x80bf700</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b92c0</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <provider><ref>0x80bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf880</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3d</name>
+ <config>
+ <index>3</index>
+ <length>6488104960</length>
+ <seclength>12672080</seclength>
+ <offset>10682408960</offset>
+ <secoffset>20864080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf800</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3c</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf780</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3a</name>
+ <config>
+ <index>0</index>
+ <length>2097152000</length>
+ <seclength>4096000</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x80bf580</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b9240</ref>
+ <geom><ref>0x80bf580</ref></geom>
+ <provider><ref>0x80bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf600</ref>
+ <geom><ref>0x80bf580</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2c</name>
+ <config>
+ <index>2</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x80bf200</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b91c0</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <provider><ref>0x80bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf480</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1f</name>
+ <config>
+ <index>5</index>
+ <length>2066973184</length>
+ <seclength>4037057</seclength>
+ <offset>1153465856</offset>
+ <secoffset>2252863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf400</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1e</name>
+ <config>
+ <index>4</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>629177856</offset>
+ <secoffset>1228863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf380</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1c</name>
+ <config>
+ <index>2</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf300</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1b</name>
+ <config>
+ <index>1</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>104889856</offset>
+ <secoffset>204863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf280</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1a</name>
+ <config>
+ <index>0</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x80711c0</ref>
+ <name>SIMDISK-method</name>
+ <geom>
+ <ref>0x80b9000</ref>
+ <method><ref>0x80711c0</ref></method>
+ <name>ad0</name>
+ <rank>1</rank>
+ <provider>
+ <ref>0x80b9040</ref>
+ <geom><ref>0x80b9000</ref></geom>
+ <mode>r0w0e1</mode>
+ <name>ad0</name>
+ </provider>
+ </geom>
+ </method>
+</mesh>
diff --git a/tools/regression/geom/ConfCmp/a1d.conf b/tools/regression/geom/ConfCmp/a1d.conf
new file mode 100644
index 0000000..a9063c5
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a1d.conf
@@ -0,0 +1,414 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <method>
+ <ref>0x80712c0</ref>
+ <name>DEV-method</name>
+ <geom>
+ <ref>0x80bfd00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3d</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9500</ref>
+ <geom><ref>0x80bfd00</ref></geom>
+ <provider><ref>0x80bf880</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfc80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b94c0</ref>
+ <geom><ref>0x80bfc80</ref></geom>
+ <provider><ref>0x80bf800</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfc00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9480</ref>
+ <geom><ref>0x80bfc00</ref></geom>
+ <provider><ref>0x80bf780</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfb80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s2c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9440</ref>
+ <geom><ref>0x80bfb80</ref></geom>
+ <provider><ref>0x80bf600</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfb00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1f</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9400</ref>
+ <geom><ref>0x80bfb00</ref></geom>
+ <provider><ref>0x80bf480</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfa80</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1e</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b93c0</ref>
+ <geom><ref>0x80bfa80</ref></geom>
+ <provider><ref>0x80bf400</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bfa00</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1c</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9380</ref>
+ <geom><ref>0x80bfa00</ref></geom>
+ <provider><ref>0x80bf380</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf980</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1b</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9340</ref>
+ <geom><ref>0x80bf980</ref></geom>
+ <provider><ref>0x80bf300</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf900</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1a</name>
+ <rank>4</rank>
+ <consumer>
+ <ref>0x80b9300</ref>
+ <geom><ref>0x80bf900</ref></geom>
+ <provider><ref>0x80bf280</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf680</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9280</ref>
+ <geom><ref>0x80bf680</ref></geom>
+ <provider><ref>0x80bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf500</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9200</ref>
+ <geom><ref>0x80bf500</ref></geom>
+ <provider><ref>0x80bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80bf180</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <consumer>
+ <ref>0x80b9180</ref>
+ <geom><ref>0x80bf180</ref></geom>
+ <provider><ref>0x80bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom>
+ <ref>0x80b9080</ref>
+ <method><ref>0x80712c0</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <consumer>
+ <ref>0x80b90c0</ref>
+ <geom><ref>0x80b9080</ref></geom>
+ <provider><ref>0x80b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </method>
+ <method>
+ <ref>0x8071280</ref>
+ <name>MBREXT-method</name>
+ </method>
+ <method>
+ <ref>0x8071260</ref>
+ <name>MBR-method</name>
+ <geom>
+ <ref>0x80b9100</ref>
+ <method><ref>0x8071260</ref></method>
+ <name>ad0</name>
+ <rank>2</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b9140</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <provider><ref>0x80b9040</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf100</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf080</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2</name>
+ <config>
+ <index>1</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf000</ref>
+ <geom><ref>0x80b9100</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1</name>
+ <config>
+ <index>0</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ <type>165</type>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x80712a0</ref>
+ <name>BSD-method</name>
+ <geom>
+ <ref>0x80bf700</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s3</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b92c0</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <provider><ref>0x80bf100</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf880</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3d</name>
+ <config>
+ <index>3</index>
+ <length>6488104960</length>
+ <seclength>12672080</seclength>
+ <offset>10682408960</offset>
+ <secoffset>20864080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf800</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3c</name>
+ <config>
+ <index>2</index>
+ <length>8585256960</length>
+ <seclength>16768080</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf780</ref>
+ <geom><ref>0x80bf700</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s3a</name>
+ <config>
+ <index>0</index>
+ <length>2097152000</length>
+ <seclength>4096000</seclength>
+ <offset>8585256960</offset>
+ <secoffset>16768080</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x80bf580</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s2</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b9240</ref>
+ <geom><ref>0x80bf580</ref></geom>
+ <provider><ref>0x80bf080</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf600</ref>
+ <geom><ref>0x80bf580</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s2c</name>
+ <config>
+ <index>2</index>
+ <length>5364817920</length>
+ <seclength>10478160</seclength>
+ <offset>3220439040</offset>
+ <secoffset>6289920</secoffset>
+ </config>
+ </provider>
+ </geom>
+ <geom>
+ <ref>0x80bf200</ref>
+ <method><ref>0x80712a0</ref></method>
+ <name>ad0s1</name>
+ <rank>3</rank>
+ <config>
+ </config>
+ <consumer>
+ <ref>0x80b91c0</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <provider><ref>0x80bf000</ref></provider>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider>
+ <ref>0x80bf480</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1f</name>
+ <config>
+ <index>5</index>
+ <length>2066973184</length>
+ <seclength>4037057</seclength>
+ <offset>1153465856</offset>
+ <secoffset>2252863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf400</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1e</name>
+ <config>
+ <index>4</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>629177856</offset>
+ <secoffset>1228863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf380</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1c</name>
+ <config>
+ <index>2</index>
+ <length>3220406784</length>
+ <seclength>6289857</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf300</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1b</name>
+ <config>
+ <index>1</index>
+ <length>524288000</length>
+ <seclength>1024000</seclength>
+ <offset>104889856</offset>
+ <secoffset>204863</secoffset>
+ </config>
+ </provider>
+ <provider>
+ <ref>0x80bf280</ref>
+ <geom><ref>0x80bf200</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0s1a</name>
+ <config>
+ <index>0</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>32256</offset>
+ <secoffset>63</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </method>
+ <method>
+ <ref>0x80711c0</ref>
+ <name>SIMDISK-method</name>
+ <geom>
+ <ref>0x80b9000</ref>
+ <method><ref>0x80711c0</ref></method>
+ <name>ad0</name>
+ <rank>1</rank>
+ <provider>
+ <ref>0x80b9040</ref>
+ <geom><ref>0x80b9000</ref></geom>
+ <mode>r0w0e0</mode>
+ <name>ad0</namf>
+ </provider>
+ </geom>
+ </method>
+</mesh>
diff --git a/tools/regression/geom/ConfCmp/a2.conf b/tools/regression/geom/ConfCmp/a2.conf
new file mode 100644
index 0000000..6688fd1
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a2.conf
@@ -0,0 +1,207 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <class id="0x80740e0">
+ <name>DEV-class</name>
+ <geom id="0x80bce00">
+ <class ref="0x80740e0"/>
+ <name>wd0s1f</name>
+ <rank>4</rank>
+ <consumer id="0x80ba240">
+ <geom ref="0x80bce00"/>
+ <provider ref="0x80bc880"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bcc80">
+ <class ref="0x80740e0"/>
+ <name>wd0s1e</name>
+ <rank>4</rank>
+ <consumer id="0x80ba200">
+ <geom ref="0x80bcc80"/>
+ <provider ref="0x80bc800"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bcb00">
+ <class ref="0x80740e0"/>
+ <name>wd0s1c</name>
+ <rank>4</rank>
+ <consumer id="0x80ba1c0">
+ <geom ref="0x80bcb00"/>
+ <provider ref="0x80bc780"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc980">
+ <class ref="0x80740e0"/>
+ <name>wd0s1b</name>
+ <rank>4</rank>
+ <consumer id="0x80ba180">
+ <geom ref="0x80bc980"/>
+ <provider ref="0x80bc700"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc900">
+ <class ref="0x80740e0"/>
+ <name>wd0s1a</name>
+ <rank>4</rank>
+ <consumer id="0x80ba140">
+ <geom ref="0x80bc900"/>
+ <provider ref="0x80bc680"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc300">
+ <class ref="0x80740e0"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <consumer id="0x80ba0c0">
+ <geom ref="0x80bc300"/>
+ <provider ref="0x80bc280"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc100">
+ <class ref="0x80740e0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <consumer id="0x80ba040">
+ <geom ref="0x80bc100"/>
+ <provider ref="0x80bc080"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </class>
+ <class id="0x8073fc0">
+ <name>PC98-class</name>
+ <geom id="0x80bc180">
+ <class ref="0x8073fc0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <config>
+ <frontstuff>8704</frontstuff>
+ </config>
+ <consumer id="0x80ba080">
+ <geom ref="0x80bc180"/>
+ <provider ref="0x80bc080"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x80bc280">
+ <geom ref="0x80bc180"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1</name>
+ <config>
+ <index>0</index>
+ <length>1626533888</length>
+ <seclength>3176824</seclength>
+ <offset>69632</offset>
+ <secoffset>136</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x8073fe0">
+ <name>SUNLABEL-class</name>
+ </class>
+ <class id="0x80740c0">
+ <name>MBREXT-class</name>
+ </class>
+ <class id="0x80740a0">
+ <name>MBR-class</name>
+ </class>
+ <class id="0x8074100">
+ <name>BSD-class</name>
+ <geom id="0x80bc480">
+ <class ref="0x8074100"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <config>
+ <labeloffset>512</labeloffset>
+ <frontstuff>8192</frontstuff>
+ </config>
+ <consumer id="0x80ba100">
+ <geom ref="0x80bc480"/>
+ <provider ref="0x80bc280"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x80bc880">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1f</name>
+ <config>
+ <index>5</index>
+ <length>1390673920</length>
+ <seclength>2716160</seclength>
+ <offset>235929600</offset>
+ <secoffset>460800</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc800">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1e</name>
+ <config>
+ <index>4</index>
+ <length>52428800</length>
+ <seclength>102400</seclength>
+ <offset>183500800</offset>
+ <secoffset>358400</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc780">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1c</name>
+ <config>
+ <index>2</index>
+ <length>1626603520</length>
+ <seclength>3176960</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc700">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1b</name>
+ <config>
+ <index>1</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>78643200</offset>
+ <secoffset>153600</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc680">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1a</name>
+ <config>
+ <index>0</index>
+ <length>78643200</length>
+ <seclength>153600</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x8074000">
+ <name>SIMDISK-class</name>
+ <geom id="0x80bc000">
+ <class ref="0x8074000"/>
+ <name>wd0</name>
+ <rank>1</rank>
+ <provider id="0x80bc080">
+ <geom ref="0x80bc000"/>
+ <mode>r0w0e0</mode>
+ <name>wd0</name>
+ </provider>
+ </geom>
+ </class>
+</mesh>
diff --git a/tools/regression/geom/ConfCmp/a2a.conf b/tools/regression/geom/ConfCmp/a2a.conf
new file mode 100644
index 0000000..3d35fe9
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a2a.conf
@@ -0,0 +1,207 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <class id="0x90740e0">
+ <name>DEV-class</name>
+ <geom id="0x90bce00">
+ <class ref="0x90740e0"/>
+ <name>wd0s1f</name>
+ <rank>4</rank>
+ <consumer id="0x90ba240">
+ <geom ref="0x90bce00"/>
+ <provider ref="0x90bc880"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x90bcc80">
+ <class ref="0x90740e0"/>
+ <name>wd0s1e</name>
+ <rank>4</rank>
+ <consumer id="0x90ba200">
+ <geom ref="0x90bcc80"/>
+ <provider ref="0x90bc800"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x90bcb00">
+ <class ref="0x90740e0"/>
+ <name>wd0s1c</name>
+ <rank>4</rank>
+ <consumer id="0x90ba1c0">
+ <geom ref="0x90bcb00"/>
+ <provider ref="0x90bc780"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x90bc980">
+ <class ref="0x90740e0"/>
+ <name>wd0s1b</name>
+ <rank>4</rank>
+ <consumer id="0x90ba180">
+ <geom ref="0x90bc980"/>
+ <provider ref="0x90bc700"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x90bc900">
+ <class ref="0x90740e0"/>
+ <name>wd0s1a</name>
+ <rank>4</rank>
+ <consumer id="0x90ba140">
+ <geom ref="0x90bc900"/>
+ <provider ref="0x90bc680"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x90bc300">
+ <class ref="0x90740e0"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <consumer id="0x90ba0c0">
+ <geom ref="0x90bc300"/>
+ <provider ref="0x90bc280"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x90bc100">
+ <class ref="0x90740e0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <consumer id="0x90ba040">
+ <geom ref="0x90bc100"/>
+ <provider ref="0x90bc080"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </class>
+ <class id="0x9073fc0">
+ <name>PC98-class</name>
+ <geom id="0x90bc180">
+ <class ref="0x9073fc0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <config>
+ <frontstuff>8704</frontstuff>
+ </config>
+ <consumer id="0x90ba080">
+ <geom ref="0x90bc180"/>
+ <provider ref="0x90bc080"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x90bc280">
+ <geom ref="0x90bc180"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1</name>
+ <config>
+ <index>0</index>
+ <length>1626533888</length>
+ <seclength>3176824</seclength>
+ <offset>69632</offset>
+ <secoffset>136</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x9073fe0">
+ <name>SUNLABEL-class</name>
+ </class>
+ <class id="0x90740c0">
+ <name>MBREXT-class</name>
+ </class>
+ <class id="0x90740a0">
+ <name>MBR-class</name>
+ </class>
+ <class id="0x9074100">
+ <name>BSD-class</name>
+ <geom id="0x90bc480">
+ <class ref="0x9074100"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <config>
+ <labeloffset>512</labeloffset>
+ <frontstuff>8192</frontstuff>
+ </config>
+ <consumer id="0x90ba100">
+ <geom ref="0x90bc480"/>
+ <provider ref="0x90bc280"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x90bc880">
+ <geom ref="0x90bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1f</name>
+ <config>
+ <index>5</index>
+ <length>1390673920</length>
+ <seclength>2716160</seclength>
+ <offset>235929600</offset>
+ <secoffset>460800</secoffset>
+ </config>
+ </provider>
+ <provider id="0x90bc800">
+ <geom ref="0x90bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1e</name>
+ <config>
+ <index>4</index>
+ <length>52428800</length>
+ <seclength>102400</seclength>
+ <offset>183500800</offset>
+ <secoffset>358400</secoffset>
+ </config>
+ </provider>
+ <provider id="0x90bc780">
+ <geom ref="0x90bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1c</name>
+ <config>
+ <index>2</index>
+ <length>1626603520</length>
+ <seclength>3176960</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ <provider id="0x90bc700">
+ <geom ref="0x90bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1b</name>
+ <config>
+ <index>1</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>78643200</offset>
+ <secoffset>153600</secoffset>
+ </config>
+ </provider>
+ <provider id="0x90bc680">
+ <geom ref="0x90bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1a</name>
+ <config>
+ <index>0</index>
+ <length>78643200</length>
+ <seclength>153600</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x9074000">
+ <name>SIMDISK-class</name>
+ <geom id="0x90bc000">
+ <class ref="0x9074000"/>
+ <name>wd0</name>
+ <rank>1</rank>
+ <provider id="0x90bc080">
+ <geom ref="0x90bc000"/>
+ <mode>r0w0e0</mode>
+ <name>wd0</name>
+ </provider>
+ </geom>
+ </class>
+</mesh>
diff --git a/tools/regression/geom/ConfCmp/a2b.conf b/tools/regression/geom/ConfCmp/a2b.conf
new file mode 100644
index 0000000..58c0e15
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a2b.conf
@@ -0,0 +1,207 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <class id="0x80740e0">
+ <name>DEV-class</name>
+ <geom id="0x80bce00">
+ <class ref="0x80740e0"/>
+ <name>wd0s1f</name>
+ <rank>4</rank>
+ <consumer id="0x80ba240">
+ <geom ref="0x80bce00"/>
+ <provider ref="0x80bc880"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bcc80">
+ <class ref="0x80740e0"/>
+ <name>wd0s1e</name>
+ <rank>4</rank>
+ <consumer id="0x80ba200">
+ <geom ref="0x80bcc80"/>
+ <provider ref="0x80bc800"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bcb00">
+ <class ref="0x80740e0"/>
+ <name>wd0s1c</name>
+ <rank>4</rank>
+ <consumer id="0x80ba1c0">
+ <geom ref="0x80bcb00"/>
+ <provider ref="0x80bc780"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc980">
+ <class ref="0x80740e0"/>
+ <name>wd0s1b</name>
+ <rank>4</rank>
+ <consumer id="0x80ba180">
+ <geom ref="0x80bc981"/>
+ <provider ref="0x80bc700"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc900">
+ <class ref="0x80740e0"/>
+ <name>wd0s1a</name>
+ <rank>4</rank>
+ <consumer id="0x80ba140">
+ <geom ref="0x80bc900"/>
+ <provider ref="0x80bc680"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc300">
+ <class ref="0x80740e0"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <consumer id="0x80ba0c0">
+ <geom ref="0x80bc300"/>
+ <provider ref="0x80bc280"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc100">
+ <class ref="0x80740e0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <consumer id="0x80ba040">
+ <geom ref="0x80bc100"/>
+ <provider ref="0x80bc080"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </class>
+ <class id="0x8073fc0">
+ <name>PC98-class</name>
+ <geom id="0x80bc180">
+ <class ref="0x8073fc0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <config>
+ <frontstuff>8704</frontstuff>
+ </config>
+ <consumer id="0x80ba080">
+ <geom ref="0x80bc180"/>
+ <provider ref="0x80bc080"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x80bc280">
+ <geom ref="0x80bc180"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1</name>
+ <config>
+ <index>0</index>
+ <length>1626533888</length>
+ <seclength>3176824</seclength>
+ <offset>69632</offset>
+ <secoffset>136</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x8073fe0">
+ <name>SUNLABEL-class</name>
+ </class>
+ <class id="0x80740c0">
+ <name>MBREXT-class</name>
+ </class>
+ <class id="0x80740a0">
+ <name>MBR-class</name>
+ </class>
+ <class id="0x8074100">
+ <name>BSD-class</name>
+ <geom id="0x80bc480">
+ <class ref="0x8074100"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <config>
+ <labeloffset>512</labeloffset>
+ <frontstuff>8192</frontstuff>
+ </config>
+ <consumer id="0x80ba100">
+ <geom ref="0x80bc480"/>
+ <provider ref="0x80bc280"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x80bc880">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1f</name>
+ <config>
+ <index>5</index>
+ <length>1390673920</length>
+ <seclength>2716160</seclength>
+ <offset>235929600</offset>
+ <secoffset>460800</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc800">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1e</name>
+ <config>
+ <index>4</index>
+ <length>52428800</length>
+ <seclength>102400</seclength>
+ <offset>183500800</offset>
+ <secoffset>358400</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc780">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1c</name>
+ <config>
+ <index>2</index>
+ <length>1626603520</length>
+ <seclength>3176960</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc700">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1b</name>
+ <config>
+ <index>1</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>78643200</offset>
+ <secoffset>153600</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc680">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1a</name>
+ <config>
+ <index>0</index>
+ <length>78643200</length>
+ <seclength>153600</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x8074000">
+ <name>SIMDISK-class</name>
+ <geom id="0x80bc000">
+ <class ref="0x8074000"/>
+ <name>wd0</name>
+ <rank>1</rank>
+ <provider id="0x80bc080">
+ <geom ref="0x80bc000"/>
+ <mode>r0w0e0</mode>
+ <name>wd0</name>
+ </provider>
+ </geom>
+ </class>
+</mesh>
diff --git a/tools/regression/geom/ConfCmp/a2c.conf b/tools/regression/geom/ConfCmp/a2c.conf
new file mode 100644
index 0000000..381c410
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a2c.conf
@@ -0,0 +1,206 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <class id="0x80740e0">
+ <name>DEV-class</name>
+ <geom id="0x80bce00">
+ <class ref="0x80740e0"/>
+ <name>wd0s1f</name>
+ <rank>4</rank>
+ <consumer id="0x80ba240">
+ <geom ref="0x80bce00"/>
+ <provider ref="0x80bc880"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bcc80">
+ <class ref="0x80740e0"/>
+ <name>wd0s1e</name>
+ <rank>4</rank>
+ <consumer id="0x80ba200">
+ <geom ref="0x80bcc80"/>
+ <provider ref="0x80bc800"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bcb00">
+ <class ref="0x80740e0"/>
+ <name>wd0s1c</name>
+ <rank>4</rank>
+ <consumer id="0x80ba1c0">
+ <geom ref="0x80bcb00"/>
+ <provider ref="0x80bc780"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc980">
+ <class ref="0x80740e0"/>
+ <name>wd0s1b</name>
+ <rank>4</rank>
+ <consumer id="0x80ba180">
+ <geom ref="0x80bc980"/>
+ <provider ref="0x80bc700"/>
+ </consumer>
+ </geom>
+ <geom id="0x80bc900">
+ <class ref="0x80740e0"/>
+ <name>wd0s1a</name>
+ <rank>4</rank>
+ <consumer id="0x80ba140">
+ <geom ref="0x80bc900"/>
+ <provider ref="0x80bc680"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc300">
+ <class ref="0x80740e0"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <consumer id="0x80ba0c0">
+ <geom ref="0x80bc300"/>
+ <provider ref="0x80bc280"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc100">
+ <class ref="0x80740e0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <consumer id="0x80ba040">
+ <geom ref="0x80bc100"/>
+ <provider ref="0x80bc080"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </class>
+ <class id="0x8073fc0">
+ <name>PC98-class</name>
+ <geom id="0x80bc180">
+ <class ref="0x8073fc0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <config>
+ <frontstuff>8704</frontstuff>
+ </config>
+ <consumer id="0x80ba080">
+ <geom ref="0x80bc180"/>
+ <provider ref="0x80bc080"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x80bc280">
+ <geom ref="0x80bc180"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1</name>
+ <config>
+ <index>0</index>
+ <length>1626533888</length>
+ <seclength>3176824</seclength>
+ <offset>69632</offset>
+ <secoffset>136</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x8073fe0">
+ <name>SUNLABEL-class</name>
+ </class>
+ <class id="0x80740c0">
+ <name>MBREXT-class</name>
+ </class>
+ <class id="0x80740a0">
+ <name>MBR-class</name>
+ </class>
+ <class id="0x8074100">
+ <name>BSD-class</name>
+ <geom id="0x80bc480">
+ <class ref="0x8074100"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <config>
+ <labeloffset>512</labeloffset>
+ <frontstuff>8192</frontstuff>
+ </config>
+ <consumer id="0x80ba100">
+ <geom ref="0x80bc480"/>
+ <provider ref="0x80bc280"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x80bc880">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1f</name>
+ <config>
+ <index>5</index>
+ <length>1390673920</length>
+ <seclength>2716160</seclength>
+ <offset>235929600</offset>
+ <secoffset>460800</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc800">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1e</name>
+ <config>
+ <index>4</index>
+ <length>52428800</length>
+ <seclength>102400</seclength>
+ <offset>183500800</offset>
+ <secoffset>358400</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc780">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1c</name>
+ <config>
+ <index>2</index>
+ <length>1626603520</length>
+ <seclength>3176960</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc700">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1b</name>
+ <config>
+ <index>1</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>78643200</offset>
+ <secoffset>153600</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc680">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1a</name>
+ <config>
+ <index>0</index>
+ <length>78643200</length>
+ <seclength>153600</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x8074000">
+ <name>SIMDISK-class</name>
+ <geom id="0x80bc000">
+ <class ref="0x8074000"/>
+ <name>wd0</name>
+ <rank>1</rank>
+ <provider id="0x80bc080">
+ <geom ref="0x80bc000"/>
+ <mode>r0w0e0</mode>
+ <name>wd0</name>
+ </provider>
+ </geom>
+ </class>
+</mesh>
diff --git a/tools/regression/geom/ConfCmp/a2d.conf b/tools/regression/geom/ConfCmp/a2d.conf
new file mode 100644
index 0000000..bccaed5
--- /dev/null
+++ b/tools/regression/geom/ConfCmp/a2d.conf
@@ -0,0 +1,211 @@
+<mesh>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <class id="0x80740e0">
+ <name>DEV-class</name>
+ <geom id="0x80bce00">
+ <class ref="0x80740e0"/>
+ <name>wd0s1f</name>
+ <rank>4</rank>
+ <consumer id="0x80ba240">
+ <geom ref="0x80bce00"/>
+ <provider ref="0x80bc880"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bcc80">
+ <class ref="0x80740e0"/>
+ <name>wd0s1e</name>
+ <rank>4</rank>
+ <consumer id="0x80ba200">
+ <geom ref="0x80bcc80"/>
+ <provider ref="0x80bc800"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bcb00">
+ <class ref="0x80740e0"/>
+ <name>wd0s1c</name>
+ <rank>4</rank>
+ <consumer id="0x80ba1c0">
+ <geom ref="0x80bcb00"/>
+ <provider ref="0x80bc780"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc980">
+ <class ref="0x80740e0"/>
+ <name>wd0s1b</name>
+ <rank>4</rank>
+ <consumer id="0x80ba180">
+ <geom ref="0x80bc980"/>
+ <provider ref="0x80bc700"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc900">
+ <class ref="0x80740e0"/>
+ <name>wd0s1a</name>
+ <rank>4</rank>
+ <consumer id="0x80ba140">
+ <geom ref="0x80bc900"/>
+ <provider ref="0x80bc680"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ <consumer id="0x80ba141">
+ <geom ref="0x80bc900"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc300">
+ <class ref="0x80740e0"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <consumer id="0x80ba0c0">
+ <geom ref="0x80bc300"/>
+ <provider ref="0x80bc280"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ <geom id="0x80bc100">
+ <class ref="0x80740e0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <consumer id="0x80ba040">
+ <geom ref="0x80bc100"/>
+ <provider ref="0x80bc080"/>
+ <mode>r0w0e0</mode>
+ </consumer>
+ </geom>
+ </class>
+ <class id="0x8073fc0">
+ <name>PC98-class</name>
+ <geom id="0x80bc180">
+ <class ref="0x8073fc0"/>
+ <name>wd0</name>
+ <rank>2</rank>
+ <config>
+ <frontstuff>8704</frontstuff>
+ </config>
+ <consumer id="0x80ba080">
+ <geom ref="0x80bc180"/>
+ <provider ref="0x80bc080"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x80bc280">
+ <geom ref="0x80bc180"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1</name>
+ <config>
+ <index>0</index>
+ <length>1626533888</length>
+ <seclength>3176824</seclength>
+ <offset>69632</offset>
+ <secoffset>136</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x8073fe0">
+ <name>SUNLABEL-class</name>
+ </class>
+ <class id="0x80740c0">
+ <name>MBREXT-class</name>
+ </class>
+ <class id="0x80740a0">
+ <name>MBR-class</name>
+ </class>
+ <class id="0x8074100">
+ <name>BSD-class</name>
+ <geom id="0x80bc480">
+ <class ref="0x8074100"/>
+ <name>wd0s1</name>
+ <rank>3</rank>
+ <config>
+ <labeloffset>512</labeloffset>
+ <frontstuff>8192</frontstuff>
+ </config>
+ <consumer id="0x80ba100">
+ <geom ref="0x80bc480"/>
+ <provider ref="0x80bc280"/>
+ <mode>r0w0e0</mode>
+ <config>
+ </config>
+ </consumer>
+ <provider id="0x80bc880">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1f</name>
+ <config>
+ <index>5</index>
+ <length>1390673920</length>
+ <seclength>2716160</seclength>
+ <offset>235929600</offset>
+ <secoffset>460800</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc800">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1e</name>
+ <config>
+ <index>4</index>
+ <length>52428800</length>
+ <seclength>102400</seclength>
+ <offset>183500800</offset>
+ <secoffset>358400</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc780">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1c</name>
+ <config>
+ <index>2</index>
+ <length>1626603520</length>
+ <seclength>3176960</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc700">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1b</name>
+ <config>
+ <index>1</index>
+ <length>104857600</length>
+ <seclength>204800</seclength>
+ <offset>78643200</offset>
+ <secoffset>153600</secoffset>
+ </config>
+ </provider>
+ <provider id="0x80bc680">
+ <geom ref="0x80bc480"/>
+ <mode>r0w0e0</mode>
+ <name>wd0s1a</name>
+ <config>
+ <index>0</index>
+ <length>78643200</length>
+ <seclength>153600</seclength>
+ <offset>0</offset>
+ <secoffset>0</secoffset>
+ </config>
+ </provider>
+ </geom>
+ </class>
+ <class id="0x8074000">
+ <name>SIMDISK-class</name>
+ <geom id="0x80bc000">
+ <class ref="0x8074000"/>
+ <name>wd0</name>
+ <rank>1</rank>
+ <provider id="0x80bc080">
+ <geom ref="0x80bc000"/>
+ <mode>r0w0e0</mode>
+ <name>wd0</name>
+ </provider>
+ </geom>
+ </class>
+</mesh>
diff --git a/tools/regression/geom/Data/disk.alpha.da0.xml b/tools/regression/geom/Data/disk.alpha.da0.xml
new file mode 100644
index 0000000..670fcc3
--- /dev/null
+++ b/tools/regression/geom/Data/disk.alpha.da0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <comment>
+ Yet an alpha disklabel.
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <fwsectors>0</fwsectors>
+ <fwheads>0</fwheads>
+ <fwcylinders>0</fwcylinders>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 574556820400000057444947544c202000000000000000000000000000000000
+ 0000000000000000000200003f000000ff000000b2080000c13e00002eae2102
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000057455682a22908000020000000200000008007000000000000040000
+ 07081600c05f20000080070000000000010000002eae21020000000000000000
+ 000000000000000000000000000000000000000000a00000c0df270000040000
+ 070818006e2ef901c07f28000004000007081600000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0e0000000000000001000000000000000000000000000000c51a45ca2ad1dba8
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.alpha2.da0.xml b/tools/regression/geom/Data/disk.alpha2.da0.xml
new file mode 100644
index 0000000..5b341b1
--- /dev/null
+++ b/tools/regression/geom/Data/disk.alpha2.da0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <comment>
+ alpha label which O'brien says blows up libdisk
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <fwsectors>0</fwsectors>
+ <fwheads>0</fwheads>
+ <fwcylinders>0</fwcylinders>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ 5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a
+ 5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a
+ 5745568204000000000000000000000000000000000000000000000000000000
+ 0000000000000000000200003f000000ff00000009020000c13e0000c9b67f00
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000005745568219cf0300002000000020000043bc0000c13e000000000000
+ 08000000fc867c0004fb00000000000008000000c934020000827d0000000000
+ 0100000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000005a5a5a5a5a5a5a5a5a5a5a5a
+ 5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a
+ 5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a
+ 5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a
+ 5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a
+ 9800000000000000020000000000000000000000000000007a13ad55a1c382b0
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.apple.xml b/tools/regression/geom/Data/disk.apple.xml
new file mode 100644
index 0000000..ecdd523
--- /dev/null
+++ b/tools/regression/geom/Data/disk.apple.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <sectorsize>512</sectorsize>
+ <mediasize>366530560</mediasize>
+ <fwsectors>0</fwsectors>
+ <fwheads>0</fwheads>
+ <fwcylinders>0</fwcylinders>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ 45520200000aec68000100010000000000010000004000120001000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>512</offset>
+ <hexdata>
+ 504d00000000000300000060000aec084d61634f530000000000000000000000
+ 000000000000000000000000000000004170706c655f48465300000000000000
+ 0000000000000000000000000000000000000000000aec08000000b700000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>1024</offset>
+ <hexdata>
+ 504d000000000003000000010000003f4170706c650000000000000000000000
+ 000000000000000000000000000000004170706c655f706172746974696f6e5f
+ 6d617000000000000000000000000000000000000000003f0000003700000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>1536</offset>
+ <hexdata>
+ 504d00000000000300000040000000204d6163696e746f736800000000000000
+ 000000000000000000000000000000004170706c655f44726976657234330000
+ 0000000000000000000000000000000000000000000000200000007f00000000
+ 000023ee0000000000000000000000000000000000007c083638303030000000
+ 0000000000000000000106000000000000000001000700000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.beast.da0.xml b/tools/regression/geom/Data/disk.beast.da0.xml
new file mode 100644
index 0000000..96ad5f7
--- /dev/null
+++ b/tools/regression/geom/Data/disk.beast.da0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ alpha BSD label from beast.freebsd.org
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <fwsectors>0</fwsectors>
+ <fwheads>0</fwheads>
+ <fwcylinders>0</fwcylinders>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 5745568204000000646130000000000000000000000000000000000000000000
+ 0000000000000000000200003f000000ff0000000f020000c13e000000338100
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000057455682594e08000020000000200000002079000000000000040000
+ 0708100000130800002079000000000001000000003381000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0f0000000000000001000000000000000000000000000000fc8c1983a904da83
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.critter.ad0.xml b/tools/regression/geom/Data/disk.critter.ad0.xml
new file mode 100644
index 0000000..9e93b24
--- /dev/null
+++ b/tools/regression/geom/Data/disk.critter.ad0.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ This image contains the MBR and disklabel sectors from my Asus M1300
+ laptop.
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ fc31c08ec08ed88ed0bc007cbe1a7cbf1a06b9e601f3a4e9008a31f6bbbe07b1
+ 04382f74087f7885f6757489de80c310e2ef85f67502cd1880fa80720b8a3675
+ 0480c68038f272028a1489e78a74018b4c02bb007c80feff753283f9ff752d51
+ 53bbaa55b441cd13722081fb55aa751af6c10174155b666a0066ff740806536a
+ 016a1089e6b80042eb055b59b80102cd1389fc720f81bffe0155aa750cffe3be
+ bc06eb11bed406eb0cbef306eb07bb0700b40ecd10ac84c075f4ebfe496e7661
+ 6c696420706172746974696f6e207461626c65004572726f72206c6f6164696e
+ 67206f7065726174696e672073797374656d004d697373696e67206f70657261
+ 74696e672073797374656d000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008001
+ 0100a50fffff3f00000041295402000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>512</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>32768</offset>
+ <hexdata>
+ 5745568205000000616430733100000000000000000000000000000000000000
+ 0000000000000000000200003f0000001000000067970000f003000041295402
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 00000000574556824fa608000020000000200000000020003f00000000040000
+ 07081600000020003f0020000000000001000000412954023f00000000000000
+ 00000000418984003fa0cf01000400000708160000a00f003f00400000040000
+ 07081600000080003fa04f000004000007081600000060003fa0cf0000040000
+ 070816000000a0003fa02f010004000007081600000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>64512</offset>
+ <hexdata>
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>1073806336</offset>
+ <hexdata>
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>1598094336</offset>
+ <hexdata>
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ 4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2147548160</offset>
+ <hexdata>
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2671836160</offset>
+ <hexdata>
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffff00000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.empty.flp.xml b/tools/regression/geom/Data/disk.empty.flp.xml
new file mode 100644
index 0000000..88c603a
--- /dev/null
+++ b/tools/regression/geom/Data/disk.empty.flp.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ An empty floppy disk
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>1474560</mediasize>
+ <fwsectors>18</fwsectors>
+ <fwheads>2</fwheads>
+ <fwcylinders>80</fwcylinders>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.far.ad0.xml b/tools/regression/geom/Data/disk.far.ad0.xml
new file mode 100644
index 0000000..0a8d3ca
--- /dev/null
+++ b/tools/regression/geom/Data/disk.far.ad0.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ A Windows laptop.
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ 33c08ed0bc007cfb5007501ffcbe1b7cbf1b065057b9e501f3a4cbbebe07b104
+ 382c7c09751583c610e2f5cd188b148bee83c610497416382c74f6be10074eac
+ 3c0074fabb0700b40ecd10ebf2894625968a4604b4063c0e7411b40b3c0c7405
+ 3ac4752b40c64625067524bbaa5550b441cd1358721681fb55aa7510f6c10174
+ 0b8ae0885624c706a106eb1e886604bf0a00b801028bdc33c983ff057f038b4e
+ 25034e02cd137229be4607813efe7d55aa745a83ef057fda85f67583be2707eb
+ 8a9891529903460813560ae812005aebd54f74e433c0cd13ebb8000080093521
+ 5633f656565250065351be1000568bf45052b800428a5624cd135a588d641072
+ 0a4075014280c702e2f7f85ec3eb74496e76616c696420706172746974696f6e
+ 207461626c65004572726f72206c6f6164696e67206f7065726174696e672073
+ 797374656d004d697373696e67206f7065726174696e672073797374656d0000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000008bfc1e578bf5cb00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 0100a05304263f00000092d80800805401260befbf730cd90800340a88000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>512</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.flat.da1.xml b/tools/regression/geom/Data/disk.flat.da1.xml
new file mode 100644
index 0000000..2302a7c
--- /dev/null
+++ b/tools/regression/geom/Data/disk.flat.da1.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ This image contains an interesting setup: there is an MBR+BSD
+ but also another BSD at sector one which is valid but bogus.
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <fwsectors>0</fwsectors>
+ <fwheads>0</fwheads>
+ <fwcylinders>0</fwcylinders>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ fc31c08ec08ed88ed0bc007cbe1a7cbf1a06b9e601f3a4e9008a31f6bbbe07b1
+ 04382f74087f7885f6757489de80c310e2ef85f67502cd1880fa80720b8a3675
+ 0480c68038f272028a1489e78a74018b4c02bb007c80feff753283f9ff752d51
+ 53bbaa55b441cd13722081fb55aa751af6c10174155b666a0066ff740806536a
+ 016a1089e6b80042eb055b59b80102cd1389fc720f81bffe0155aa750cffe3be
+ bc06eb11bed406eb0cbef306eb07bb0700b40ecd10ac84c075f4ebfe496e7661
+ 6c696420706172746974696f6e207461626c65004572726f72206c6f6164696e
+ 67206f7065726174696e672073797374656d004d697373696e67206f70657261
+ 74696e672073797374656d000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008001
+ 0100a5feffff3f0000003a612302000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>512</offset>
+ <hexdata>
+ 5745568204000000534541474154452053543331383433360000000000000000
+ 000000000000000000020000000800000100000072440000000800000004fb00
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000057455682e29908000020000000200000002001000000000000040000
+ 07081000000008000020010000000000010000000004fb000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000e0f100002009000004000007081000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>32256</offset>
+ <hexdata>
+ eb1b9090161f666a005150065331c088f0506a1089e5e8c7008d6610cbfc31c9
+ 8ec18ed98ed1bc007c89e6bf0007fec5f3a5beee7d80fa80722cb601e86700b9
+ 0100bebe8db601807c04a57507e319f60480751483c610fec680fe0572e949e3
+ e1be8b7deb5231d289160009b610e83500bb00908b770a01debf00b0b900ac29
+ f1f3a429f930c0f3aae80300e98113fae464a80275fab0d1e664e464a80275fa
+ b0dfe660fbc3bb008c8b44088b4c0a0ee853ff732abe867de81c00be907de816
+ 0030e4cd16c70672043412ea0000ffffbb0700b40ecd10ac84c075f4b401f9c3
+ 52b408cd1388f55a72f580e13f74edfa668b460852660fb6d96631d266f7f388
+ eb88d54330d266f7f388d75a663dff030000fb774486c4c0c80208e8409188fe
+ 28e08a660238e0720288e0bf0500c45e0450b402cd135b730a4f741c30e4cd13
+ 93ebeb0fb6c30146087303ff460ad0e3005e052846027788c32ef6069908800f
+ 8479ffbbaa5552b441cd135a0f826fff81fb55aa0f8564fff6c1010f845dff89
+ eeb442cd13c35265616400426f6f7400206572726f720d0a0080909090909090
+ 9090909090909090909090909090909090909090909090909090909090900000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000080000100a5ffffff0000000050c3000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>32768</offset>
+ <hexdata>
+ 5745568204000000646131733100000000000000000000000000000000000000
+ 0000000000000000000200003f000000ff000000b8080000c13e00003a612302
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000005745568233c408000020000000200000000000000000000000000000
+ 0000000000800c003f800c0000000000010000003a6123023f00000000000000
+ 000000000000000000000000000000000000000000800c003f00000000040000
+ 07081600000020003f00190000040000070816003a61ea013f00390000040000
+ 0708160000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.kern.flp.xml b/tools/regression/geom/Data/disk.kern.flp.xml
new file mode 100644
index 0000000..6640c48
--- /dev/null
+++ b/tools/regression/geom/Data/disk.kern.flp.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ A FreeBSD kern.flp image.
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ eb1b9090161f666a005150065331c088f0506a1089e5e8c7008d6610cbfc31c9
+ 8ec18ed98ed1bc007c89e6bf0007fec5f3a5beee7d80fa80722cb601e86700b9
+ 0100bebe8db601807c04a57507e319f60480751483c610fec680fe0572e949e3
+ e1be8b7deb5231d289160009b610e83500bb00908b770a01debf00b0b900ac29
+ f1f3a429f930c0f3aae80300e98113fae464a80275fab0d1e664e464a80275fa
+ b0dfe660fbc3bb008c8b44088b4c0a0ee853ff732abe867de81c00be907de816
+ 0030e4cd16c70672043412ea0000ffffbb0700b40ecd10ac84c075f4b401f9c3
+ 52b408cd1388f55a72f580e13f74edfa668b460852660fb6d96631d266f7f388
+ eb88d54330d266f7f388d75a663dff030000fb774486c4c0c80208e8409188fe
+ 28e08a660238e0720288e0bf0500c45e0450b402cd135b730a4f741c30e4cd13
+ 93ebeb0fb6c30146087303ff460ad0e3005e052846027788c32ef6069908800f
+ 8479ffbbaa5552b441cd135a0f826fff81fb55aa0f8564fff6c1010f845dff89
+ eeb442cd13c35265616400426f6f7400206572726f720d0a0080909090909090
+ 9090909090909090909090909090909090909090909090909090909090900000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000080000100a5ffffff0000000050c3000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>512</offset>
+ <hexdata>
+ 5745568200000000666431343430000000000000000000000000000000000000
+ 00000000000000000002000012000000020000005000000024000000400b0000
+ 00000000000000002c0101000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000057455682286903000020000000200000400b00000000000000020000
+ 00080000400b0000000000000002000000080000400b00000000000000020000
+ 0708060000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.msdos.ext.xml b/tools/regression/geom/Data/disk.msdos.ext.xml
new file mode 100644
index 0000000..868a88f7
--- /dev/null
+++ b/tools/regression/geom/Data/disk.msdos.ext.xml
@@ -0,0 +1,534 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ A MSDOS 6.22 disk with maximal number of extended partitions.
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ fa33c08ed0bc007c8bf45007501ffbfcbf0006b90001f2a5ea1d060000bebe07
+ b304803c80740e803c00751c83c610fecb75efcd188b148b4c028bee83c610fe
+ cb741a803c0074f4be8b06ac3c00740b56bb0700b40ecd105eebf0ebfebf0500
+ bb007cb8010257cd135f730c33c0cd134f75edbea306ebd3bec206bffe7d813d
+ 55aa75c78bf5ea007c0000496e76616c696420706172746974696f6e20746162
+ 6c65004572726f72206c6f6164696e67206f7065726174696e67207379737465
+ 6d004d697373696e67206f7065726174696e672073797374656d000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000008001
+ 010006fe7f043f00000086fa3f000000410505fe7f38c5fa3f0034bf0c000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>512</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2146798080</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410501fe7f053f000000823e00000000410605fe7f06c13e0000c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2155023360</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410601fe7f063f000000823e00000000410705fe7f07827d0000c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2163248640</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410701fe7f073f000000823e00000000410805fe7f0843bc0000c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2171473920</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410801fe7f083f000000823e00000000410905fe7f0904fb0000c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2179699200</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410901fe7f093f000000823e00000000410a05fe7f0ac5390100c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2187924480</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410a01fe7f0a3f000000823e00000000410b05fe7f0b86780100c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2196149760</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410b01fe7f0b3f000000823e00000000410c05fe7f0c47b70100c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2204375040</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410c01fe7f0c3f000000823e00000000410d05fe7f0d08f60100c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2212600320</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410d01fe7f0d3f000000823e00000000410e05fe7f0ec9340200c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2220825600</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410e01fe7f0e3f000000823e00000000410f05fe7f0f8a730200c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2229050880</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 410f01fe7f0f3f000000823e00000000411005fe7f104bb20200c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2237276160</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411001fe7f103f000000823e00000000411105fe7f110cf10200c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2245501440</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411101fe7f113f000000823e00000000411205fe7f12cd2f0300c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2253726720</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411201fe7f123f000000823e00000000411305fe7f138e6e0300c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2261952000</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411301fe7f133f000000823e00000000411405fe7f144fad0300c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2270177280</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411401fe7f143f000000823e00000000411505fe7f1510ec0300c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2278402560</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411501fe7f153f000000823e00000000411605fe7f16d12a0400c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2286627840</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411601fe7f163f000000823e00000000411705fe7f1792690400c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2294853120</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411701fe7f173f000000823e00000000411805fe7f1853a80400c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2303078400</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411801fe7f183f000000823e00000000411905fe7f1914e70400c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2311303680</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411901fe7f193f000000823e00000000411a05fe7f1ad5250500c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2319528960</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411a01fe7f1a3f000000823e00000000411b05fe7f1b96640500c13e00000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>2327754240</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000001
+ 411b01fe7f1b3f000000823e0000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.msdos.flp.xml b/tools/regression/geom/Data/disk.msdos.flp.xml
new file mode 100644
index 0000000..d057d1a
--- /dev/null
+++ b/tools/regression/geom/Data/disk.msdos.flp.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ A MSDOS floppy image.
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ eb3c904d53444f53352e30000201010002e000400bf009001200020000000000
+ 0000000000002911053b114e4f204e414d45202020204641543132202020fa33
+ c08ed0bc007c1607bb780036c5371e561653bf3e7cb90b00fcf3a4061fc645fe
+ 0f8b0e187c884df9894702c7073e7cfbcd13727933c03906137c74088b0e137c
+ 890e207ca0107cf726167c03061c7c13161e7c03060e7c83d200a3507c891652
+ 7ca3497c89164b7cb82000f726117c8b1e0b7c03c348f7f30106497c83164b7c
+ 00bb00058b16527ca1507ce89200721db001e8ac0072168bfbb90b00bee67df3
+ a6750a8d7f20b90b00f3a67418be9e7de85f0033c0cd165e1f8f048f4402cd19
+ 585858ebe88b471a48488a1e0d7c32fff7e30306497c13164b7cbb0007b90300
+ 505251e83a0072d8b001e85400595a5872bb05010083d200031e0b7ce2e28a2e
+ 157c8a16247c8b1e497ca14b7cea00007000ac0ac07429b40ebb0700cd10ebf2
+ 3b16187c7319f736187cfec288164f7c33d2f7361a7c8816257ca34d7cf8c3f9
+ c3b4028b164d7cb106d2e60a364f7c8bca86e98a16247c8a36257ccd13c30d0a
+ 4e6f6e2d53797374656d206469736b206f72206469736b206572726f720d0a52
+ 65706c61636520616e6420707265737320616e79206b6579207768656e207265
+ 6164790d0a00494f2020202020205359534d53444f53202020535953000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>512</offset>
+ <hexdata>
+ f0ffff03400005600007800009a0000bc0000de0000f00011120011340011560
+ 0117800119a0011bc0011de0011f000221200223400225600227800229a0022b
+ c0022de0022f000331200333400335600337800339a0033bc0033de0033f0004
+ 41200443400445600447800449a0044bc0044de0044f000551f0ff5340055560
+ 0557800559a0055bc0055de0055f000661200663400665600667800669a0066b
+ c0066de0066f000771200773400775600777800779a0077bc0077de0077f0008
+ 81200883400885600887800889a0088bc0088de0088f00099120099340099560
+ 0997800999a0099bc009ffef099f000aa1200aa3400aa5600aa7800aa9a00aab
+ c00aade00aaf000bb1200bb3400bb5600bb7800bb9a00bbbc00bbde00bbf000c
+ c1200cc3400cc5600cc7800cc9a00ccbc00ccde00ccf000dd1200dd3400dd560
+ 0dd7800dd9a00ddbc00ddde00ddf000ee1200ee3400ee5600ee7800ee9a00eeb
+ c00eede00eef000ff1200ff3400ff5600ff7800ff9a00ffbc00ffde00fff0010
+ 01211003411005611007f1ff09a1100bc1100de1100f01111121111341111561
+ 1117811119a1111bc1111de1111f011221211223411225611227811229a1122b
+ c1122de1122f011331211333411335611337811339a1133bc1133de1133f0114
+ 41211443411445611447811449a1144bc1144de1144f01155121155341155561
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.pc98.wdc0.xml b/tools/regression/geom/Data/disk.pc98.wdc0.xml
new file mode 100644
index 0000000..6bae97f
--- /dev/null
+++ b/tools/regression/geom/Data/disk.pc98.wdc0.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <FreeBSD>$FreeBSD$</FreeBSD>
+ <comment>
+ A PC98 disklabel from Warner
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <fwsectors>17</fwsectors>
+ <fwheads>8</fwheads>
+ <fwcylinders>0</fwcylinders>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ e9fd009049504c310000001ea08405b48ecd1ba820742232dbb414cd1b721a80
+ fb847515e896007303eb6b90b424bb0004b93012ba4001cd1bbb0001b484cd1b
+ b40633c933d2508cc82dc0038ec05833edcd1b7241b406ba010081c50008cd1b
+ 7234ba0400f7c300aa7403ba0200b406bb001c81c50008cd1b721b508bc5b104
+ d3e88cc103c18bf058e815002e89360a002eff1e0800e80800b40ecd1bb90100
+ cb56a0840532dbb414cd1b720e80fb8475092ec606d40000e802005ec3b4b0be
+ d000ba06001e0e1fcd1bb4b0cd1b1fc31e000000010000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000d0055aa
+ fa601e066800d81f33f6b51e813c8b46750e817c0204eb7507817c05b4007405
+ 46e2e9eb6032ff8a5c040358f18d7c03be9a012e015c03b00cba6104eeb002ba
+ 3d05ee68009807b95b00f32ea4b9ff0f33f633d226ad02f402d0e2f8f6def6da
+ 268914b416b3c2e4f0a840750680cc2080cb048ac3ba3f04ee8ac4ba3d05eeb0
+ 08ba6104ee071f612ec7060000eb0a2ec70602009090fbe966fec390e8ebffb9
+ 21007402b1118bc1f6660702460612e5912ef66703f7660403c183d200c3fec2
+ 26881605205926880e0a20c390909090905191b81100502ef6670291f7f126a3
+ 0220599233d2f7f12680260420f02608060420ebc9000000000080010d0055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>512</offset>
+ <hexdata>
+ 94c4000000000100000001000000405b46726565425344000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>70144</offset>
+ <hexdata>
+ 5745568205000000776430733100000000000000000000000000000000000000
+ 0000000000000000000200001100000008000000415b000088000000887a3000
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000005745568295f208000020000000200000005802008800000000000000
+ 0700000000200300885802000000000001000000007a30008800000000000000
+ 0000000000000000000000000000000000000000009001008878050000000000
+ 0700000000722900880807000000000007000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.sun.da0.xml b/tools/regression/geom/Data/disk.sun.da0.xml
new file mode 100644
index 0000000..826581f
--- /dev/null
+++ b/tools/regression/geom/Data/disk.sun.da0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ A Solaris 8 disklabel
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <fwsectors>0</fwsectors>
+ <fwheads>0</fwheads>
+ <fwcylinders>0</fwcylinders>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ 49424d2d444459532d5433363935304d2d533936482063796c20313439373020
+ 616c742032206864203132207365632033393900000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000100000000000000000008000200000003000100050000000000000000
+ 0000000000000000000000080000003f000000000000000000000000600ddeee
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000027103a7c00000000000000013a7a0002000c018f00000000000000dc
+ 002d96c000000000001012b0000000000445b1c8000000000000000000000000
+ 00000000000000000000000000000000000000000000034c04080858dabe5ec8
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.sun.da1.xml b/tools/regression/geom/Data/disk.sun.da1.xml
new file mode 100644
index 0000000..0aac8e5
--- /dev/null
+++ b/tools/regression/geom/Data/disk.sun.da1.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ A Solaris 8 disklabel
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <fwsectors>0</fwsectors>
+ <fwheads>0</fwheads>
+ <fwcylinders>0</fwcylinders>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ 53554e3138472063796c203735303620616c7420322068642031392073656320
+ 3234380000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000170686b00000000000008000200000003000100050000000800010000
+ 00000007000000040000000800000000000000000000000000000000600ddeee
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000001c201d5400000000000000011d520002001300f80000000000000000
+ 0007d6480000006d0020113000000000021bad5000000b4e014b873800000000
+ 000000000000022b00400ff8000005a600400ff80000092100280c48dabe971e
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/Data/disk.typo.ad0.xml b/tools/regression/geom/Data/disk.typo.ad0.xml
new file mode 100644
index 0000000..56383ab
--- /dev/null
+++ b/tools/regression/geom/Data/disk.typo.ad0.xml
@@ -0,0 +1,219 @@
+<?xml version="1.0"?>
+<DISKIMAGE>
+ <comment>
+ $FreeBSD$
+ A multislice FreeBSD disk
+ </comment>
+ <sectorsize>512</sectorsize>
+ <mediasize>0</mediasize>
+ <sector>
+ <offset>0</offset>
+ <hexdata>
+ fc31c08ec08ed88ed0bc007cbd000a89efb108f3abfe45f252bb000689eeb802
+ 02e82e015ae9008af686bbfd20750484d278048a96bafd885600e8fc0052bbc2
+ 0731d2886ffc0fa396bbfd731c8a07bf0f08b103f2ae7411b10df2ae750481c7
+ 0d008a0d01cfe8c1004280c31073d4582c7f3a067504720548740e30c004b088
+ 86b8fdbfb207e8a100be0308e8ad008a96b9fd4ee8880030e4cd1a89d703bebc
+ fdb401cd16751330e4cd1a39fa72f28a86b9fdeb15b007e88e0030e4cd1688e0
+ 3c1c74eb2c3b3c0477eb980fa3460c73e48886b9fdbe000a8a1489f33c049c74
+ 0ac0e00405be0793c6078053f686bbfd407509bb0006b80103e856005e9d7507
+ 8a96b8fd80ea30bb007cb80102e8420072a381bffe0155aa759be81c00ffe3b0
+ 46e82400b03100d0eb170fab560cbe0008e8ebff89fee80300be0d08aca88075
+ 05e80400ebf6247f53bb0700b40ecd105bc38a74018b4c025689e780feff7540
+ 83f9ff753bf686bbfd8074345153bbaa5550b441cd1358720e81fb55aa7508f6
+ c101740380cc405b59f6c4407412666a0066ff740806536a006a1089e6864402
+ cd1389fc5ec39090909090909090909001014472697665200000808fb6008001
+ 0100a5ef7f9f3f000000c1f95f00000041a0a5efffff00fa5f0050e29f0000ff
+ ffffa5efffff50dcff0050dcff000000000000000000000000000000000055aa
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>512</offset>
+ <hexdata>
+ 2020a00a44656661756c743aa00d8a00050f010406070b0c0e6383a5a6a9b70e
+ 141312141d1c1b2124282e3439556e6b6e6f77ee444fd357696e646f7773204e
+ d457696e646f77f3554e49d84c696e75f8467265654253c44f70656e4253c44e
+ 65744253c44253442f4fd3000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>32768</offset>
+ <hexdata>
+ 5745568205000000616430733100000000000000000000000000000000000000
+ 0000000000000000000200003f000000f0000000180a0000103b000080295402
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000005745568204c108000020000000200000002003003f00000000000000
+ 0700000000a00f003f2003000000000001000000c1f95f003f00000000000000
+ 000000000000000000000000000000000000000000a00f003fc0120000000000
+ 07000000c1993d003f6022000000000007000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>64512</offset>
+ <hexdata>
+ 0000007c0000010002000400f8ff0000000400f8000000000000000000000004
+ 0000004000000008000000000010007e00800000070000fe1f00000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>104922112</offset>
+ <hexdata>
+ 3310f30d0350fbf66f44ebd906c9963d46b2bf609bb753131e7c24cf9ed194ce
+ a59117b612772b207ddcb753df72456f98d0cac567f60526c7b9308afd87e657
+ dd45b3d1eb075b6820aa6ea5a0f10511f65a257f0d7d89d88e189bef43786ff5
+ a0316511a7a07168f2ef001e71fbc56dd8ddc7866c4856dc979742be22f4badd
+ e1fcba7aebe4b5f4bb8b0c89e84de59f0ba48d7a8b00bb1797fc057e3d3d8058
+ 4b1987ac49b74bed74cb4985850d5be64e8188d40ad0323165b355c512a91523
+ 5d5211eeb021c754f552b160f9a73c4c5e59370163cf531ca0382cc462f9ac9d
+ 35612380f7a5d9d5e3bde129ef6fab02347088025d0937fb6c56dc68c283ce9d
+ 1cfc5b3c7ad1f52faeae05188386cb57cb88c5dccaa2db17a09420ae7d9f9d6e
+ 058370711f445cff4d4543ee9f0c3054400116304018f68d9c08d05b04680162
+ 23172b8b1775157790fe5e5100c530e3377d383a0080468b0125e87e8d7dee5f
+ 46030a238dc8a0000cb4eafc6ad4735f2c16d1642e3834aefbb5bfc25fcc0062
+ 3a89410ab88839e3ed151cd6bc2b5704c5db4c9fc39662bd3a41347212c664be
+ 04684e551c0a0362bb3139a460a7c8d178c349a47d724b7d456606b2f47a8d99
+ d4af7998148ed93443a828ece96cdb7eb158a21189ed1527bdad7b18b74f168b
+ d01fcfde994977174e41ad8f6ea19fac8bb95e5d68643d0457d746cf32531639
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>629210112</offset>
+ <hexdata>
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>1153498112</offset>
+ <hexdata>
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>3220439552</offset>
+ <hexdata>
+ 5745568205000000616430733200000000000000000000000000000000000000
+ 0000000000000000000200003f000000f0000000180a0000103b000080295402
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000057455682fc1908000020000000200000000000000000000000000000
+ 000000000000000000000000000000000000000050e29f0000fa5f0000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>6440878080</offset>
+ <hexdata>
+ 0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a
+ 0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a
+ 0a0a0a0a0a0a0a0a0a0a0a0a3c4120200a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a
+ 0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a
+ 0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a
+ 0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a
+ 0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a687265663d22687474703a2f2f777777
+ 2e706c6179626f7973746f72652e636f6d2f70626c696e6b2e6367693f616666
+ 696c696174653d4d4f3130303030303034353426736b753d4249303130362220
+ 7461726765743d225f626c616e6b22206f6e6d6f7573656f7665723d22706172
+ 656e742e77696e646f772e7374617475733d27506c6179626f792053746f7265
+ 273b2072657475726e2074727565223e3c494d47207372633d22687474703a2f
+ 2f61313833322e672e616b2e706c6179626f792e636f6d2f372f313833322f32
+ 332f3939303232313437302f7777772e706c6179626f792e636f6d2f6d616761
+ 7a696e652f63757272656e742f696d782f636f7665725f696e6465782e6a7067
+ 2220616c69676e3d72696768742077696474683d223135302220686569676874
+ </hexdata>
+ </sector>
+ <sector>
+ <offset>8585257472</offset>
+ <hexdata>
+ 5745568205000000616430733300000000000000000000000000000000000000
+ 0000000000000000000200003f000000f000000055040000103b000050dcff00
+ 0000000000000000100e01000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000057455682bcbd0800002000000020000000803e0050dcff0000040000
+ 070816000000000000000000000000000000000050dcff0050dcff0000000000
+ 00000000505cc100505c3e010010000007049f00000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ </hexdata>
+ </sector>
+</DISKIMAGE>
diff --git a/tools/regression/geom/MdLoad/Makefile b/tools/regression/geom/MdLoad/Makefile
new file mode 100644
index 0000000..7bf18af
--- /dev/null
+++ b/tools/regression/geom/MdLoad/Makefile
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+PROG= MdLoad
+DPADD= ${LIBSBUF} ${LIBBSDXML}
+LDADD= -lsbuf -lbsdxml
+
+NO_MAN=
+
+
+WARNS?= 4
+.include "bsd.prog.mk"
+
+test: ${PROG}
+ ./${PROG} md34 ../Data/disk.critter.ad0.xml
diff --git a/tools/regression/geom/MdLoad/MdLoad.c b/tools/regression/geom/MdLoad/MdLoad.c
new file mode 100644
index 0000000..710d7d3
--- /dev/null
+++ b/tools/regression/geom/MdLoad/MdLoad.c
@@ -0,0 +1,271 @@
+/*-
+ * Copyright (c) 2003 Poul-Henning Kamp
+ * Copyright (c) 2002 Networks Associates Technology, Inc.
+ * All rights reserved.
+ *
+ * This software was developed for the FreeBSD Project by Poul-Henning Kamp
+ * and NAI Labs, the Security Research Division of Network Associates, Inc.
+ * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the
+ * DARPA CHATS research program.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The names of the authors may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdint.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <paths.h>
+#include <fcntl.h>
+#include <err.h>
+#include <bsdxml.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/queue.h>
+#include <sys/sbuf.h>
+#include <sys/mman.h>
+
+struct sector {
+ LIST_ENTRY(sector) sectors;
+ off_t offset;
+ unsigned char *data;
+};
+
+struct simdisk_softc {
+ int sectorsize;
+ off_t mediasize;
+ off_t lastsector;
+ LIST_HEAD(,sector) sectors;
+ struct sbuf *sbuf;
+ struct sector *sp;
+ u_int fwsectors;
+ u_int fwheads;
+ u_int fwcylinders;
+};
+
+static void
+g_simdisk_insertsector(struct simdisk_softc *sc, struct sector *dsp)
+{
+ struct sector *dsp2, *dsp3;
+
+ if (sc->lastsector < dsp->offset)
+ sc->lastsector = dsp->offset;
+ if (LIST_EMPTY(&sc->sectors)) {
+ LIST_INSERT_HEAD(&sc->sectors, dsp, sectors);
+ return;
+ }
+ dsp3 = NULL;
+ LIST_FOREACH(dsp2, &sc->sectors, sectors) {
+ dsp3 = dsp2;
+ if (dsp2->offset > dsp->offset) {
+ LIST_INSERT_BEFORE(dsp2, dsp, sectors);
+ return;
+ }
+ }
+ LIST_INSERT_AFTER(dsp3, dsp, sectors);
+}
+
+static void
+startElement(void *userData, const char *name, const char **atts __unused)
+{
+ struct simdisk_softc *sc;
+
+ sc = userData;
+ if (!strcasecmp(name, "sector")) {
+ sc->sp = calloc(1, sizeof(*sc->sp) + sc->sectorsize);
+ sc->sp->data = (u_char *)(sc->sp + 1);
+ }
+ sbuf_clear(sc->sbuf);
+}
+
+static void
+endElement(void *userData, const char *name)
+{
+ struct simdisk_softc *sc;
+ char *p;
+ u_char *q;
+ int i, j;
+ off_t o;
+
+ sc = userData;
+
+ if (!strcasecmp(name, "comment")) {
+ sbuf_clear(sc->sbuf);
+ return;
+ }
+ sbuf_finish(sc->sbuf);
+ if (!strcasecmp(name, "sectorsize")) {
+ sc->sectorsize = strtoul(sbuf_data(sc->sbuf), &p, 0);
+ if (*p != '\0')
+ errx(1, "strtoul croaked on sectorsize");
+ } else if (!strcasecmp(name, "mediasize")) {
+ o = strtoull(sbuf_data(sc->sbuf), &p, 0);
+ if (*p != '\0')
+ errx(1, "strtoul croaked on mediasize");
+ if (o > 0)
+ sc->mediasize = o;
+ } else if (!strcasecmp(name, "fwsectors")) {
+ sc->fwsectors = strtoul(sbuf_data(sc->sbuf), &p, 0);
+ if (*p != '\0')
+ errx(1, "strtoul croaked on fwsectors");
+ } else if (!strcasecmp(name, "fwheads")) {
+ sc->fwheads = strtoul(sbuf_data(sc->sbuf), &p, 0);
+ if (*p != '\0')
+ errx(1, "strtoul croaked on fwheads");
+ } else if (!strcasecmp(name, "fwcylinders")) {
+ sc->fwcylinders = strtoul(sbuf_data(sc->sbuf), &p, 0);
+ if (*p != '\0')
+ errx(1, "strtoul croaked on fwcylinders");
+ } else if (!strcasecmp(name, "offset")) {
+ sc->sp->offset= strtoull(sbuf_data(sc->sbuf), &p, 0);
+ if (*p != '\0')
+ errx(1, "strtoul croaked on offset");
+ } else if (!strcasecmp(name, "fill")) {
+ j = strtoul(sbuf_data(sc->sbuf), NULL, 16);
+ memset(sc->sp->data, j, sc->sectorsize);
+ } else if (!strcasecmp(name, "hexdata")) {
+ q = sc->sp->data;
+ p = sbuf_data(sc->sbuf);
+ for (i = 0; i < sc->sectorsize; i++) {
+ if (!isxdigit(*p))
+ errx(1, "I croaked on hexdata %d:(%02x)", i, *p);
+ if (isdigit(*p))
+ j = (*p - '0') << 4;
+ else
+ j = (tolower(*p) - 'a' + 10) << 4;
+ p++;
+ if (!isxdigit(*p))
+ errx(1, "I croaked on hexdata %d:(%02x)", i, *p);
+ if (isdigit(*p))
+ j |= *p - '0';
+ else
+ j |= tolower(*p) - 'a' + 10;
+ p++;
+ *q++ = j;
+ }
+ } else if (!strcasecmp(name, "sector")) {
+ g_simdisk_insertsector(sc, sc->sp);
+ sc->sp = NULL;
+ } else if (!strcasecmp(name, "diskimage")) {
+ } else if (!strcasecmp(name, "FreeBSD")) {
+ } else {
+ printf("<%s>[[%s]]\n", name, sbuf_data(sc->sbuf));
+ }
+ sbuf_clear(sc->sbuf);
+}
+
+static void
+characterData(void *userData, const XML_Char *s, int len)
+{
+ const char *b, *e;
+ struct simdisk_softc *sc;
+
+ sc = userData;
+ b = s;
+ e = s + len - 1;
+ while (isspace(*b) && b < e)
+ b++;
+ while (isspace(*e) && e > b)
+ e--;
+ if (e != b || !isspace(*b))
+ sbuf_bcat(sc->sbuf, b, e - b + 1);
+}
+
+static struct simdisk_softc *
+g_simdisk_xml_load(const char *file)
+{
+ XML_Parser parser = XML_ParserCreate(NULL);
+ struct stat st;
+ char *p;
+ struct simdisk_softc *sc;
+ int fd, i;
+
+ sc = calloc(1, sizeof *sc);
+ sc->sbuf = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND);
+ LIST_INIT(&sc->sectors);
+ XML_SetUserData(parser, sc);
+ XML_SetElementHandler(parser, startElement, endElement);
+ XML_SetCharacterDataHandler(parser, characterData);
+
+ fd = open(file, O_RDONLY);
+ if (fd < 0)
+ err(1, file);
+ fstat(fd, &st);
+ p = mmap(NULL, st.st_size, PROT_READ, MAP_NOCORE|MAP_PRIVATE, fd, 0);
+ i = XML_Parse(parser, p, st.st_size, 1);
+ if (i != 1)
+ errx(1, "XML_Parse complains: return %d", i);
+ munmap(p, st.st_size);
+ close(fd);
+ XML_ParserFree(parser);
+ return (sc);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct simdisk_softc *sc;
+ char buf[BUFSIZ];
+ int error, fd;
+ struct sector *dsp;
+
+ if (argc != 3)
+ errx(1, "Usage: %s mddevice xmlfile", argv[0]);
+
+ sc = g_simdisk_xml_load(argv[2]);
+ if (sc->mediasize == 0)
+ sc->mediasize = sc->lastsector + sc->sectorsize * 10;
+ if (sc->sectorsize == 0)
+ sc->sectorsize = 512;
+ sprintf(buf, "mdconfig -a -t malloc -s %jd -S %d",
+ (intmax_t)sc->mediasize / sc->sectorsize, sc->sectorsize);
+ if (sc->fwsectors && sc->fwheads)
+ sprintf(buf + strlen(buf), " -x %d -y %d",
+ sc->fwsectors, sc->fwheads);
+ sprintf(buf + strlen(buf), " -u %s", argv[1]);
+ error = system(buf);
+ if (error)
+ return (error);
+ fd = open(argv[1], O_RDWR);
+ if (fd < 0 && errno == ENOENT) {
+ sprintf(buf, "%s%s", _PATH_DEV, argv[1]);
+ fd = open(buf, O_RDWR);
+ }
+ if (fd < 0)
+ err(1, "Could not open %s", argv[1]);
+ LIST_FOREACH(dsp, &sc->sectors, sectors) {
+ lseek(fd, dsp->offset, SEEK_SET);
+ error = write(fd, dsp->data, sc->sectorsize);
+ if (error != sc->sectorsize)
+ err(1, "write sectordata failed");
+ }
+ close(fd);
+ exit (0);
+}
diff --git a/tools/regression/geom/Ref/disk.alpha.da0.xml b/tools/regression/geom/Ref/disk.alpha.da0.xml
new file mode 100644
index 0000000..a300f0d
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.alpha.da0.xml
@@ -0,0 +1,7 @@
+$FreeBSD$
+/dev/md34 512 5120 10
+/dev/md34a 512 251658240 491520
+/dev/md34b 512 1086291968 2121664
+/dev/md34c 512 18309995520 35761710
+/dev/md34e 512 20971520 40960
+/dev/md34f 512 16951073792 33107566
diff --git a/tools/regression/geom/Ref/disk.alpha2.da0.xml b/tools/regression/geom/Ref/disk.alpha2.da0.xml
new file mode 100644
index 0000000..7ef7573
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.alpha2.da0.xml
@@ -0,0 +1,5 @@
+$FreeBSD$
+/dev/md34 512 5120 10
+/dev/md34a 512 24675840 48195
+/dev/md34b 512 4178442240 8161020
+/dev/md34c 512 74027520 144585
diff --git a/tools/regression/geom/Ref/disk.apple.xml b/tools/regression/geom/Ref/disk.apple.xml
new file mode 100644
index 0000000..a2a0f98
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.apple.xml
@@ -0,0 +1,5 @@
+$FreeBSD$
+/dev/md34 512 366530560 715880
+/dev/md34s1 512 366481408 715784
+/dev/md34s2 512 32256 63
+/dev/md34s3 512 16384 32
diff --git a/tools/regression/geom/Ref/disk.beast.da0.xml b/tools/regression/geom/Ref/disk.beast.da0.xml
new file mode 100644
index 0000000..b6aa32e
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.beast.da0.xml
@@ -0,0 +1,5 @@
+$FreeBSD$
+/dev/md34 512 5120 10
+/dev/md34a 512 4064280576 7938048
+/dev/md34b 512 270925824 529152
+/dev/md34c 512 4335206400 8467200
diff --git a/tools/regression/geom/Ref/disk.critter.ad0.xml b/tools/regression/geom/Ref/disk.critter.ad0.xml
new file mode 100644
index 0000000..0620bfe
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.critter.ad0.xml
@@ -0,0 +1,11 @@
+$FreeBSD$
+/dev/md34 512 2671841280 5218440
+/dev/md34s1 512 20003848704 39070017
+/dev/md34s1a 512 1073741824 2097152
+/dev/md34s1b 512 1073741824 2097152
+/dev/md34s1c 512 20003848704 39070017
+/dev/md34s1d 512 4447175168 8685889
+/dev/md34s1e 512 524288000 1024000
+/dev/md34s1f 512 4294967296 8388608
+/dev/md34s1g 512 3221225472 6291456
+/dev/md34s1h 512 5368709120 10485760
diff --git a/tools/regression/geom/Ref/disk.empty.flp.xml b/tools/regression/geom/Ref/disk.empty.flp.xml
new file mode 100644
index 0000000..659b416
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.empty.flp.xml
@@ -0,0 +1,2 @@
+$FreeBSD$
+/dev/md34 512 1474560 2880 80 2 18
diff --git a/tools/regression/geom/Ref/disk.far.ad0.xml b/tools/regression/geom/Ref/disk.far.ad0.xml
new file mode 100644
index 0000000..629816a
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.far.ad0.xml
@@ -0,0 +1,4 @@
+$FreeBSD$
+/dev/md34 512 5632 11
+/dev/md34s1 512 296821760 579730
+/dev/md34s2 512 4564740096 8915508
diff --git a/tools/regression/geom/Ref/disk.flat.da1.xml b/tools/regression/geom/Ref/disk.flat.da1.xml
new file mode 100644
index 0000000..89e2df4
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.flat.da1.xml
@@ -0,0 +1,12 @@
+$FreeBSD$
+/dev/md34 512 37888 74
+/dev/md34a 512 37748736 73728
+/dev/md34b 512 268435456 524288
+/dev/md34c 512 8422686720 16450560
+/dev/md34h 512 8115978240 15851520
+/dev/md34s1 512 18367017984 35873082
+/dev/md34s1b 512 419430400 819200
+/dev/md34s1c 512 18367017984 35873082
+/dev/md34s1e 512 419430400 819200
+/dev/md34s1f 512 1073741824 2097152
+/dev/md34s1g 512 16454415360 32137530
diff --git a/tools/regression/geom/Ref/disk.kern.flp.xml b/tools/regression/geom/Ref/disk.kern.flp.xml
new file mode 100644
index 0000000..6ff67a0
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.kern.flp.xml
@@ -0,0 +1,5 @@
+$FreeBSD$
+/dev/md34 512 5632 11
+/dev/md34a 512 1474560 2880
+/dev/md34b 512 1474560 2880
+/dev/md34c 512 1474560 2880
diff --git a/tools/regression/geom/Ref/disk.msdos.ext.xml b/tools/regression/geom/Ref/disk.msdos.ext.xml
new file mode 100644
index 0000000..dc2aced
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.msdos.ext.xml
@@ -0,0 +1,27 @@
+$FreeBSD$
+/dev/md34 512 2327759360 4546405
+/dev/md34s1 512 2146765824 4192902
+/dev/md34s10 512 8193024 16002
+/dev/md34s11 512 8193024 16002
+/dev/md34s12 512 8193024 16002
+/dev/md34s13 512 8193024 16002
+/dev/md34s14 512 8193024 16002
+/dev/md34s15 512 8193024 16002
+/dev/md34s16 512 8193024 16002
+/dev/md34s17 512 8193024 16002
+/dev/md34s18 512 8193024 16002
+/dev/md34s19 512 8193024 16002
+/dev/md34s2 512 427714560 835380
+/dev/md34s20 512 8193024 16002
+/dev/md34s21 512 8193024 16002
+/dev/md34s22 512 8193024 16002
+/dev/md34s23 512 8193024 16002
+/dev/md34s24 512 8193024 16002
+/dev/md34s25 512 8193024 16002
+/dev/md34s26 512 8193024 16002
+/dev/md34s27 512 8193024 16002
+/dev/md34s5 512 8193024 16002
+/dev/md34s6 512 8193024 16002
+/dev/md34s7 512 8193024 16002
+/dev/md34s8 512 8193024 16002
+/dev/md34s9 512 8193024 16002
diff --git a/tools/regression/geom/Ref/disk.msdos.flp.xml b/tools/regression/geom/Ref/disk.msdos.flp.xml
new file mode 100644
index 0000000..c176c58
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.msdos.flp.xml
@@ -0,0 +1,2 @@
+$FreeBSD$
+/dev/md34 512 5632 11
diff --git a/tools/regression/geom/Ref/disk.pc98.wdc0.xml b/tools/regression/geom/Ref/disk.pc98.wdc0.xml
new file mode 100644
index 0000000..5ffb0c9
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.pc98.wdc0.xml
@@ -0,0 +1,8 @@
+$FreeBSD$
+/dev/md34 512 75264 147 1 8 17
+/dev/md34s1 512 1626603520 3176960 23360 8 17
+/dev/md34s1a 512 78643200 153600 1129 8 17
+/dev/md34s1b 512 104857600 204800 1505 8 17
+/dev/md34s1c 512 1626603520 3176960 23360 8 17
+/dev/md34s1e 512 52428800 102400 752 8 17
+/dev/md34s1f 512 1390673920 2716160 19971 8 17
diff --git a/tools/regression/geom/Ref/disk.sun.da0.xml b/tools/regression/geom/Ref/disk.sun.da0.xml
new file mode 100644
index 0000000..15b97c8
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.sun.da0.xml
@@ -0,0 +1,6 @@
+$FreeBSD$
+/dev/md34 512 5120 10
+/dev/md34a 512 1529708544 2987712
+/dev/md34b 512 539320320 1053360
+/dev/md34c 512 36698296320 71676360
+/dev/md34h 512 34629267456 67635288
diff --git a/tools/regression/geom/Ref/disk.sun.da1.xml b/tools/regression/geom/Ref/disk.sun.da1.xml
new file mode 100644
index 0000000..004771b
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.sun.da1.xml
@@ -0,0 +1,9 @@
+$FreeBSD$
+/dev/md34 512 5120 10
+/dev/md34a 512 262967296 513608
+/dev/md34b 512 1075994624 2101552
+/dev/md34c 512 18108555264 35368272
+/dev/md34d 512 11124240384 21727032
+/dev/md34f 512 2149576704 4198392
+/dev/md34g 512 2149576704 4198392
+/dev/md34h 512 1343787008 2624584
diff --git a/tools/regression/geom/Ref/disk.typo.ad0.xml b/tools/regression/geom/Ref/disk.typo.ad0.xml
new file mode 100644
index 0000000..6d537dd
--- /dev/null
+++ b/tools/regression/geom/Ref/disk.typo.ad0.xml
@@ -0,0 +1,14 @@
+$FreeBSD$
+/dev/md34 512 8585262592 16768091
+/dev/md34s1 512 3220406784 6289857
+/dev/md34s1a 512 104857600 204800
+/dev/md34s1b 512 524288000 1024000
+/dev/md34s1c 512 3220406784 6289857
+/dev/md34s1e 512 524288000 1024000
+/dev/md34s1f 512 2066973184 4037057
+/dev/md34s2 512 5364817920 10478160
+/dev/md34s2c 512 5364817920 10478160
+/dev/md34s3 512 8585256960 16768080
+/dev/md34s3a 512 2097152000 4096000
+/dev/md34s3c 512 8585256960 16768080
+/dev/md34s3d 512 6488104960 12672080
diff --git a/tools/regression/geom/RunTest.sh b/tools/regression/geom/RunTest.sh
new file mode 100644
index 0000000..46a14b4
--- /dev/null
+++ b/tools/regression/geom/RunTest.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+# $FreeBSD$
+
+MD=34
+TMP=/tmp/$$
+
+set -e
+
+r=0
+
+(cd MdLoad && make) > /dev/null 2>&1
+
+for f in Data/disk.*.xml
+do
+ b=`basename $f`
+ mdconfig -d -u $MD > /dev/null 2>&1 || true
+ if [ -c /dev/md$MD ] ; then
+ sleep 1
+ fi
+ if [ -c /dev/md$MD ] ; then
+ sleep 1
+ fi
+ if [ -c /dev/md$MD ] ; then
+ echo "/dev/md$MD is busy" 1>&2
+ exit 1
+ fi
+ MdLoad/MdLoad md${MD} $f
+ if [ -f Ref/$b ] ; then
+ if diskinfo /dev/md${MD}* |
+ diff -I '$FreeBSD' -u Ref/$b - > $TMP; then
+ echo "PASSED: $b"
+ else
+ echo "FAILED: $b"
+ sed 's/^/ /' $TMP
+ r=2;
+ fi
+ else
+ diskinfo /dev/md${MD}* > Ref/`basename $f`
+ fi
+done
+
+mdconfig -d -u $MD > /dev/null 2>&1 || true
+rm -f $TMP
+exit $r
diff --git a/tools/regression/geom/RunTest.t b/tools/regression/geom/RunTest.t
new file mode 100644
index 0000000..96a3530
--- /dev/null
+++ b/tools/regression/geom/RunTest.t
@@ -0,0 +1,50 @@
+#!/bin/sh
+# $FreeBSD$
+
+MD=34
+TMP=/tmp/$$
+
+set -e
+
+# Start from the right directory so we can find all our data files.
+cd `dirname $0`
+
+(cd MdLoad && make) > /dev/null 2>&1
+
+# Print the test header
+echo -n '1..'
+echo `ls -1 Data/disk.*.xml | wc -l`
+
+for f in Data/disk.*.xml
+do
+ b=`basename $f`
+ mdconfig -d -u $MD > /dev/null 2>&1 || true
+ if [ -c /dev/md$MD ] ; then
+ sleep 1
+ fi
+ if [ -c /dev/md$MD ] ; then
+ sleep 1
+ fi
+ if [ -c /dev/md$MD ] ; then
+ echo "Bail out!"
+ echo "/dev/md$MD is busy"
+ exit 1
+ fi
+ MdLoad/MdLoad md${MD} $f
+ if [ -f Ref/$b ] ; then
+ if diskinfo /dev/md${MD}* |
+ diff -I '$FreeBSD' -u Ref/$b - > $TMP; then
+ echo "ok - $b"
+ else
+ echo "not ok - $b"
+ sed 's/^/# /' $TMP
+ fi
+ else
+ diskinfo /dev/md${MD}* > Ref/`basename $f`
+ fi
+done
+
+mdconfig -d -u $MD > /dev/null 2>&1 || true
+rm -f $TMP
+
+exit 0
diff --git a/tools/regression/geom_concat/conf.sh b/tools/regression/geom_concat/conf.sh
new file mode 100644
index 0000000..0eaf1ba
--- /dev/null
+++ b/tools/regression/geom_concat/conf.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# $FreeBSD$
+
+name="test"
+class="concat"
+base=`basename $0`
+
+. `dirname $0`/../geom_subr.sh
diff --git a/tools/regression/geom_concat/test-1.t b/tools/regression/geom_concat/test-1.t
new file mode 100644
index 0000000..8984f79
--- /dev/null
+++ b/tools/regression/geom_concat/test-1.t
@@ -0,0 +1,30 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo '1..1'
+
+us=45
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 2M -u `expr $us + 1` || exit 1
+mdconfig -a -t malloc -s 3M -u `expr $us + 2` || exit 1
+
+gconcat create $name /dev/md${us} /dev/md`expr $us + 1` /dev/md`expr $us + 2` || exit 1
+devwait
+
+# Size of created device should be 1MB + 2MB + 3MB.
+
+size=`diskinfo /dev/concat/${name} | awk '{print $3}'`
+
+if [ $size -eq 6291456 ]; then
+ echo "ok - Size is 6291456"
+else
+ echo "not ok - Size is 6291456"
+fi
+
+gconcat destroy $name
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
+mdconfig -d -u `expr $us + 2`
diff --git a/tools/regression/geom_concat/test-2.t b/tools/regression/geom_concat/test-2.t
new file mode 100644
index 0000000..445d9bc
--- /dev/null
+++ b/tools/regression/geom_concat/test-2.t
@@ -0,0 +1,35 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo '1..1'
+
+us=45
+tsize=6
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=1m count=$tsize >/dev/null 2>&1
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 2M -u `expr $us + 1` || exit 1
+mdconfig -a -t malloc -s 3M -u `expr $us + 2` || exit 1
+
+gconcat create $name /dev/md${us} /dev/md`expr $us + 1` /dev/md`expr $us + 2` || exit 1
+devwait
+
+dd if=${src} of=/dev/concat/${name} bs=1m count=$tsize >/dev/null 2>&1
+dd if=/dev/concat/${name} of=${dst} bs=1m count=$tsize >/dev/null 2>&1
+
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok - md5 checksum comparison"
+else
+ echo "ok - md5 checksum comparison"
+fi
+
+gconcat destroy $name
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
+mdconfig -d -u `expr $us + 2`
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_eli/attach-d.t b/tools/regression/geom_eli/attach-d.t
new file mode 100644
index 0000000..de4602f
--- /dev/null
+++ b/tools/regression/geom_eli/attach-d.t
@@ -0,0 +1,38 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..3"
+
+dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+geli init -P -K $keyfile md${no}
+geli attach -d -p -k $keyfile md${no}
+if [ -c /dev/md${no}.eli ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+# Be sure it doesn't detach on read.
+dd if=/dev/md${no}.eli of=/dev/null 2>/dev/null
+sleep 1
+if [ -c /dev/md${no}.eli ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+true > /dev/md${no}.eli
+sleep 1
+if [ ! -c /dev/md${no}.eli ]; then
+ echo "ok 3"
+else
+ echo "not ok 3"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile
diff --git a/tools/regression/geom_eli/configure-b-B.t b/tools/regression/geom_eli/configure-b-B.t
new file mode 100644
index 0000000..b58138b
--- /dev/null
+++ b/tools/regression/geom_eli/configure-b-B.t
@@ -0,0 +1,130 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..17"
+
+geli init -P -K /dev/null md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+
+geli dump md${no} | egrep 'flags: 0x0$' >/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+
+geli init -b -P -K /dev/null md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 3"
+else
+ echo "not ok 3"
+fi
+
+geli dump md${no} | egrep 'flags: 0x2$' >/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 4"
+else
+ echo "not ok 4"
+fi
+
+geli configure -B md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 5"
+else
+ echo "not ok 5"
+fi
+
+geli dump md${no} | egrep 'flags: 0x0$' >/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 6"
+else
+ echo "not ok 6"
+fi
+
+geli configure -b md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 7"
+else
+ echo "not ok 7"
+fi
+
+geli dump md${no} | egrep 'flags: 0x2$' >/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 8"
+else
+ echo "not ok 8"
+fi
+
+geli attach -p -k /dev/null md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 9"
+else
+ echo "not ok 9"
+fi
+
+geli list md${no}.eli | egrep '^Flags: .*BOOT' >/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 10"
+else
+ echo "not ok 10"
+fi
+
+geli configure -B md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 11"
+else
+ echo "not ok 11"
+fi
+
+geli list md${no}.eli | egrep '^Flags: .*BOOT' >/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 12"
+else
+ echo "not ok 12"
+fi
+
+geli dump md${no} | egrep 'flags: 0x0$' >/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 13"
+else
+ echo "not ok 13"
+fi
+
+geli configure -b md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 14"
+else
+ echo "not ok 14"
+fi
+
+geli list md${no}.eli | egrep '^Flags: .*BOOT' >/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 15"
+else
+ echo "not ok 15"
+fi
+
+geli dump md${no} | egrep 'flags: 0x2$' >/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 16"
+else
+ echo "not ok 16"
+fi
+
+geli detach md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 17"
+else
+ echo "not ok 17"
+fi
+
+mdconfig -d -u $no
diff --git a/tools/regression/geom_eli/delkey.t b/tools/regression/geom_eli/delkey.t
new file mode 100644
index 0000000..2a9ae40
--- /dev/null
+++ b/tools/regression/geom_eli/delkey.t
@@ -0,0 +1,140 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile1=`mktemp /tmp/$base.XXXXXX` || exit 1
+keyfile2=`mktemp /tmp/$base.XXXXXX` || exit 1
+keyfile3=`mktemp /tmp/$base.XXXXXX` || exit 1
+keyfile4=`mktemp /tmp/$base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..14"
+
+dd if=/dev/random of=${keyfile1} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile2} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile3} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile4} bs=512 count=16 >/dev/null 2>&1
+
+geli init -P -K $keyfile1 md${no}
+geli attach -p -k $keyfile1 md${no}
+geli setkey -n 1 -P -K $keyfile2 md${no}
+
+# Remove key 0 for attached provider.
+geli delkey -n 0 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+geli detach md${no}
+
+# We cannot use keyfile1 anymore.
+geli attach -p -k $keyfile1 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+
+# Attach with key 1.
+geli attach -p -k $keyfile2 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 3"
+else
+ echo "not ok 3"
+fi
+
+# We cannot remove last key without -f option (for attached provider).
+geli delkey -n 1 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 4"
+else
+ echo "not ok 4"
+fi
+
+# Remove last key for attached provider.
+geli delkey -f -n 1 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 5"
+else
+ echo "not ok 5"
+fi
+
+# If there are no valid keys, but provider is attached, we can save situation.
+geli setkey -n 0 -P -K $keyfile3 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 6"
+else
+ echo "not ok 6"
+fi
+geli detach md${no}
+
+# We cannot use keyfile2 anymore.
+geli attach -p -k $keyfile2 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 7"
+else
+ echo "not ok 7"
+fi
+
+# Attach with key 0.
+geli attach -p -k $keyfile3 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 8"
+else
+ echo "not ok 8"
+fi
+
+# Setup key 1.
+geli setkey -n 1 -P -K $keyfile4 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 9"
+else
+ echo "not ok 9"
+fi
+geli detach md${no}
+
+# Remove key 1 for detached provider.
+geli delkey -n 1 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 10"
+else
+ echo "not ok 10"
+fi
+
+# We cannot use keyfile4 anymore.
+geli attach -p -k $keyfile4 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 11"
+else
+ echo "not ok 11"
+fi
+
+# We cannot remove last key without -f option (for detached provider).
+geli delkey -n 0 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 12"
+else
+ echo "not ok 12"
+fi
+
+# Remove last key for detached provider.
+geli delkey -f -n 0 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 13"
+else
+ echo "not ok 13"
+fi
+
+# We cannot use keyfile3 anymore.
+geli attach -p -k $keyfile3 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 14"
+else
+ echo "not ok 14"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile1 $keyfile2 $keyfile3 $keyfile4
diff --git a/tools/regression/geom_eli/detach-l.t b/tools/regression/geom_eli/detach-l.t
new file mode 100644
index 0000000..ae6c3b2
--- /dev/null
+++ b/tools/regression/geom_eli/detach-l.t
@@ -0,0 +1,44 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..4"
+
+dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+geli init -P -K $keyfile md${no}
+geli attach -p -k $keyfile md${no}
+if [ -c /dev/md${no}.eli ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+# Be sure it doesn't detach before 'detach -l'.
+dd if=/dev/md${no}.eli of=/dev/null 2>/dev/null
+sleep 1
+if [ -c /dev/md${no}.eli ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+geli detach -l md${no}
+if [ -c /dev/md${no}.eli ]; then
+ echo "ok 3"
+else
+ echo "not ok 3"
+fi
+dd if=/dev/md${no}.eli of=/dev/null 2>/dev/null
+sleep 1
+if [ ! -c /dev/md${no}.eli ]; then
+ echo "ok 4"
+else
+ echo "not ok 4"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile
diff --git a/tools/regression/geom_eli/init-a.t b/tools/regression/geom_eli/init-a.t
new file mode 100644
index 0000000..fb0a1c4
--- /dev/null
+++ b/tools/regression/geom_eli/init-a.t
@@ -0,0 +1,51 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+echo "1..540"
+
+i=1
+for cipher in aes:0 aes:128 aes:192 aes:256 \
+ 3des:0 3des:192 \
+ blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+ blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+ blowfish:416 blowfish:448; do
+ ealgo=${cipher%%:*}
+ keylen=${cipher##*:}
+ for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 hmac/sha384 hmac/sha512; do
+ for secsize in 512 1024 2048 4096 8192; do
+ rnd=`mktemp /tmp/$base.XXXXXX` || exit 1
+ mdconfig -a -t malloc -s `expr $secsize \* $sectors + 512`b -u $no || exit 1
+
+ dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+ geli init -a $aalgo -e $ealgo -l $keylen -P -K $keyfile -s $secsize md${no}
+ geli attach -p -k $keyfile md${no}
+
+ secs=`diskinfo /dev/md${no}.eli | awk '{print $4}'`
+
+ dd if=/dev/random of=${rnd} bs=${secsize} count=${secs} >/dev/null 2>&1
+ dd if=${rnd} of=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null
+
+ md_rnd=`dd if=${rnd} bs=${secsize} count=${secs} 2>/dev/null | md5`
+ md_ddev=`dd if=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null | md5`
+
+ if [ ${md_rnd} = ${md_ddev} ]; then
+ echo "ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ rm -f $rnd
+ mdconfig -d -u $no
+ done
+ done
+done
+
+rm -f $keyfile
diff --git a/tools/regression/geom_eli/init-i-P.t b/tools/regression/geom_eli/init-i-P.t
new file mode 100644
index 0000000..a77c1c6
--- /dev/null
+++ b/tools/regression/geom_eli/init-i-P.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..1"
+
+dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+geli init -i 64 -P -K ${keyfile} md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile
diff --git a/tools/regression/geom_eli/init.t b/tools/regression/geom_eli/init.t
new file mode 100644
index 0000000..10fd7f7
--- /dev/null
+++ b/tools/regression/geom_eli/init.t
@@ -0,0 +1,56 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+echo "1..180"
+
+i=1
+for cipher in aes:0 aes:128 aes:192 aes:256 \
+ 3des:0 3des:192 \
+ blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+ blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+ blowfish:416 blowfish:448; do
+ ealgo=${cipher%%:*}
+ keylen=${cipher##*:}
+ for secsize in 512 1024 2048 4096 8192; do
+ rnd=`mktemp /tmp/$base.XXXXXX` || exit 1
+ mdconfig -a -t malloc -s `expr $secsize \* $sectors + 512`b -u $no || exit 1
+
+ dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+ geli init -e $ealgo -l $keylen -P -K $keyfile -s $secsize md${no}
+ geli attach -p -k $keyfile md${no}
+
+ secs=`diskinfo /dev/md${no}.eli | awk '{print $4}'`
+
+ dd if=/dev/random of=${rnd} bs=${secsize} count=${secs} >/dev/null 2>&1
+ dd if=${rnd} of=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null
+
+ md_rnd=`dd if=${rnd} bs=${secsize} count=${secs} 2>/dev/null | md5`
+ md_ddev=`dd if=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null | md5`
+ md_edev=`dd if=/dev/md${no} bs=${secsize} count=${secs} 2>/dev/null | md5`
+
+ if [ ${md_rnd} = ${md_ddev} ]; then
+ echo "ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+ if [ ${md_rnd} != ${md_edev} ]; then
+ echo "ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ rm -f $rnd
+ mdconfig -d -u $no
+ done
+done
+
+rm -f $keyfile
diff --git a/tools/regression/geom_eli/integrity-copy.t b/tools/regression/geom_eli/integrity-copy.t
new file mode 100644
index 0000000..eb4ce6c
--- /dev/null
+++ b/tools/regression/geom_eli/integrity-copy.t
@@ -0,0 +1,90 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+sector=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+echo "1..2160"
+
+i=1
+for cipher in aes:0 aes:128 aes:192 aes:256 \
+ 3des:0 3des:192 \
+ blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+ blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+ blowfish:416 blowfish:448; do
+ ealgo=${cipher%%:*}
+ keylen=${cipher##*:}
+ for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 hmac/sha384 hmac/sha512; do
+ for secsize in 512 1024 2048 4096 8192; do
+ #mdconfig -a -t malloc -s `expr $secsize \* 2 + 512`b -u $no || exit 1
+ mdconfig -a -t malloc -s $sectors -u $no || exit 1
+
+ dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+ geli init -a $aalgo -e $ealgo -l $keylen -P -K $keyfile -s $secsize md${no}
+ geli attach -p -k $keyfile md${no}
+
+ dd if=/dev/random of=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
+
+ dd if=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "ok $i - small 1 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - small 1 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ # Copy first small sector to the second small sector.
+ # This should be detected as corruption.
+ dd if=/dev/md${no} of=${sector} bs=512 count=1 >/dev/null 2>&1
+ dd if=${sector} of=/dev/md${no} bs=512 count=1 seek=1 >/dev/null 2>&1
+ geli attach -p -k $keyfile md${no}
+
+ dd if=/dev/md${no}.eli of=/dev/null bs=${secsize} count=1 >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo "ok $i - small 2 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - small 2 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ ms=`diskinfo /dev/md${no} | awk '{print $3 - 512}'`
+ ns=`diskinfo /dev/md${no}.eli | awk '{print $4}'`
+ usecsize=`echo "($ms / $ns) - (($ms / $ns) % 512)" | bc`
+
+ dd if=/dev/random of=/dev/md${no}.eli bs=${secsize} count=2 >/dev/null 2>&1
+
+ dd if=/dev/md${no}.eli bs=${secsize} count=2 >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "ok $i - big 1 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - big 1 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ # Copy first big sector to the second big sector.
+ # This should be detected as corruption.
+ dd if=/dev/md${no} of=${sector} bs=${usecsize} count=1 >/dev/null 2>&1
+ dd if=${sector} of=/dev/md${no} bs=${usecsize} count=1 seek=1 >/dev/null 2>&1
+ geli attach -p -k $keyfile md${no}
+
+ dd if=/dev/md${no}.eli of=/dev/null bs=${secsize} count=2 >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo "ok $i - big 2 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - big 2 aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ mdconfig -d -u $no
+ done
+ done
+done
+
+rm -f $keyfile $sector
diff --git a/tools/regression/geom_eli/integrity-data.t b/tools/regression/geom_eli/integrity-data.t
new file mode 100644
index 0000000..3b11084
--- /dev/null
+++ b/tools/regression/geom_eli/integrity-data.t
@@ -0,0 +1,60 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+sector=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+echo "1..1080"
+
+i=1
+for cipher in aes:0 aes:128 aes:192 aes:256 \
+ 3des:0 3des:192 \
+ blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+ blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+ blowfish:416 blowfish:448; do
+ ealgo=${cipher%%:*}
+ keylen=${cipher##*:}
+ for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 hmac/sha384 hmac/sha512; do
+ for secsize in 512 1024 2048 4096 8192; do
+ mdconfig -a -t malloc -s `expr $secsize \* 2 + 512`b -u $no || exit 1
+
+ dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+ geli init -a $aalgo -e $ealgo -l $keylen -P -K $keyfile -s $secsize md${no}
+ geli attach -p -k $keyfile md${no}
+
+ dd if=/dev/random of=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
+
+ dd if=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ # Corrupt 8 bytes of data.
+ dd if=/dev/md${no} of=${sector} bs=512 count=1 >/dev/null 2>&1
+ dd if=/dev/random of=${sector} bs=1 count=8 seek=64 conv=notrunc >/dev/null 2>&1
+ dd if=${sector} of=/dev/md${no} bs=512 count=1 >/dev/null 2>&1
+ geli attach -p -k $keyfile md${no}
+
+ dd if=/dev/md${no}.eli of=/dev/null bs=${secsize} count=1 >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo "ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ mdconfig -d -u $no
+ done
+ done
+done
+
+rm -f $keyfile $sector
diff --git a/tools/regression/geom_eli/integrity-hmac.t b/tools/regression/geom_eli/integrity-hmac.t
new file mode 100644
index 0000000..50dcb8a
--- /dev/null
+++ b/tools/regression/geom_eli/integrity-hmac.t
@@ -0,0 +1,60 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+sector=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+echo "1..1080"
+
+i=1
+for cipher in aes:0 aes:128 aes:192 aes:256 \
+ 3des:0 3des:192 \
+ blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+ blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+ blowfish:416 blowfish:448; do
+ ealgo=${cipher%%:*}
+ keylen=${cipher##*:}
+ for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 hmac/sha384 hmac/sha512; do
+ for secsize in 512 1024 2048 4096 8192; do
+ mdconfig -a -t malloc -s `expr $secsize \* 2 + 512`b -u $no || exit 1
+
+ dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+ geli init -a $aalgo -e $ealgo -l $keylen -P -K $keyfile -s $secsize md${no}
+ geli attach -p -k $keyfile md${no}
+
+ dd if=/dev/random of=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
+
+ dd if=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ # Corrupt 8 bytes of HMAC.
+ dd if=/dev/md${no} of=${sector} bs=512 count=1 >/dev/null 2>&1
+ dd if=/dev/random of=${sector} bs=1 count=16 conv=notrunc >/dev/null 2>&1
+ dd if=${sector} of=/dev/md${no} bs=512 count=1 >/dev/null 2>&1
+ geli attach -p -k $keyfile md${no}
+
+ dd if=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo "ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ mdconfig -d -u $no
+ done
+ done
+done
+
+rm -f $keyfile $sector
diff --git a/tools/regression/geom_eli/kill.t b/tools/regression/geom_eli/kill.t
new file mode 100644
index 0000000..ecd910a
--- /dev/null
+++ b/tools/regression/geom_eli/kill.t
@@ -0,0 +1,97 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile1=`mktemp /tmp/$base.XXXXXX` || exit 1
+keyfile2=`mktemp /tmp/$base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..9"
+
+dd if=/dev/random of=${keyfile1} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile2} bs=512 count=16 >/dev/null 2>&1
+
+geli init -P -K $keyfile1 md${no}
+geli attach -p -k $keyfile1 md${no}
+geli setkey -n 1 -P -K $keyfile2 md${no}
+
+# Kill attached provider.
+geli kill md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+sleep 1
+# Provider should be automatically detached.
+if [ ! -c /dev/md{$no}.eli ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+
+# We cannot use keyfile1 anymore.
+geli attach -p -k $keyfile1 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 3"
+else
+ echo "not ok 3"
+fi
+
+# We cannot use keyfile2 anymore.
+geli attach -p -k $keyfile2 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 4"
+else
+ echo "not ok 4"
+fi
+
+geli init -P -K $keyfile1 md${no}
+geli setkey -n 1 -p -k $keyfile1 -P -K $keyfile2 md${no}
+
+# Should be possible to attach with keyfile1.
+geli attach -p -k $keyfile1 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 5"
+else
+ echo "not ok 5"
+fi
+geli detach md${no}
+
+# Should be possible to attach with keyfile2.
+geli attach -p -k $keyfile2 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 6"
+else
+ echo "not ok 6"
+fi
+geli detach md${no}
+
+# Kill detached provider.
+geli kill md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 7"
+else
+ echo "not ok 7"
+fi
+
+# We cannot use keyfile1 anymore.
+geli attach -p -k $keyfile1 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 8"
+else
+ echo "not ok 8"
+fi
+
+# We cannot use keyfile2 anymore.
+geli attach -p -k $keyfile2 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 9"
+else
+ echo "not ok 9"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile1 $keyfile2
diff --git a/tools/regression/geom_eli/nokey.t b/tools/regression/geom_eli/nokey.t
new file mode 100644
index 0000000..c2cbecd
--- /dev/null
+++ b/tools/regression/geom_eli/nokey.t
@@ -0,0 +1,65 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..8"
+
+geli init -P md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+
+dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+geli init -P -K ${keyfile} md${no} 2>/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+geli attach -p md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 3"
+else
+ echo "not ok 3"
+fi
+geli attach -p -k ${keyfile} md${no} 2>/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 4"
+else
+ echo "not ok 4"
+fi
+geli setkey -n 0 -P md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 5"
+else
+ echo "not ok 5"
+fi
+geli detach md${no} 2>/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 6"
+else
+ echo "not ok 6"
+fi
+geli setkey -n 0 -p -P -K ${keyfile} md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 7"
+else
+ echo "not ok 7"
+fi
+geli setkey -n 0 -p -k ${keyfile} -P md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 8"
+else
+ echo "not ok 8"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile
diff --git a/tools/regression/geom_eli/onetime-a.t b/tools/regression/geom_eli/onetime-a.t
new file mode 100644
index 0000000..13681cf
--- /dev/null
+++ b/tools/regression/geom_eli/onetime-a.t
@@ -0,0 +1,45 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+
+echo "1..540"
+
+i=1
+for cipher in aes:0 aes:128 aes:192 aes:256 \
+ 3des:0 3des:192 \
+ blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+ blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+ blowfish:416 blowfish:448; do
+ ealgo=${cipher%%:*}
+ keylen=${cipher##*:}
+ for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 hmac/sha384 hmac/sha512; do
+ for secsize in 512 1024 2048 4096 8192; do
+ rnd=`mktemp /tmp/$base.XXXXXX` || exit 1
+ mdconfig -a -t malloc -s `expr $secsize \* $sectors + 512`b -u $no || exit 1
+
+ geli onetime -a $aalgo -e $ealgo -l $keylen -s $secsize md${no}
+
+ secs=`diskinfo /dev/md${no}.eli | awk '{print $4}'`
+
+ dd if=/dev/random of=${rnd} bs=${secsize} count=${secs} >/dev/null 2>&1
+ dd if=${rnd} of=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null
+
+ md_rnd=`dd if=${rnd} bs=${secsize} count=${secs} 2>/dev/null | md5`
+ md_ddev=`dd if=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null | md5`
+
+ if [ ${md_rnd} = ${md_ddev} ]; then
+ echo "ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ rm -f $rnd
+ mdconfig -d -u $no
+ done
+ done
+done
diff --git a/tools/regression/geom_eli/onetime-d.t b/tools/regression/geom_eli/onetime-d.t
new file mode 100644
index 0000000..d49cb64
--- /dev/null
+++ b/tools/regression/geom_eli/onetime-d.t
@@ -0,0 +1,33 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+mdconfig -a -t malloc -s $sectors -u $no || exit 1
+
+echo "1..3"
+
+geli onetime -d md${no}
+if [ -c /dev/md${no}.eli ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+# Be sure it doesn't detach on read.
+dd if=/dev/md${no}.eli of=/dev/null 2>/dev/null
+sleep 1
+if [ -c /dev/md${no}.eli ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+true > /dev/md${no}.eli
+sleep 1
+if [ ! -c /dev/md${no}.eli ]; then
+ echo "ok 3"
+else
+ echo "not ok 3"
+fi
+
+mdconfig -d -u $no
diff --git a/tools/regression/geom_eli/onetime.t b/tools/regression/geom_eli/onetime.t
new file mode 100644
index 0000000..70b5479
--- /dev/null
+++ b/tools/regression/geom_eli/onetime.t
@@ -0,0 +1,50 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+
+echo "1..180"
+
+i=1
+for cipher in aes:0 aes:128 aes:192 aes:256 \
+ 3des:0 3des:192 \
+ blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
+ blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
+ blowfish:416 blowfish:448; do
+ ealgo=${cipher%%:*}
+ keylen=${cipher##*:}
+ for secsize in 512 1024 2048 4096 8192; do
+ rnd=`mktemp /tmp/$base.XXXXXX` || exit 1
+ mdconfig -a -t malloc -s `expr $secsize \* $sectors`b -u $no || exit 1
+
+ geli onetime -e $ealgo -l $keylen -s $secsize md${no}
+
+ secs=`diskinfo /dev/md${no}.eli | awk '{print $4}'`
+
+ dd if=/dev/random of=${rnd} bs=${secsize} count=${secs} >/dev/null 2>&1
+ dd if=${rnd} of=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null
+
+ md_rnd=`dd if=${rnd} bs=${secsize} count=${secs} 2>/dev/null | md5`
+ md_ddev=`dd if=/dev/md${no}.eli bs=${secsize} count=${secs} 2>/dev/null | md5`
+ md_edev=`dd if=/dev/md${no} bs=${secsize} count=${secs} 2>/dev/null | md5`
+
+ if [ ${md_rnd} = ${md_ddev} ]; then
+ echo "ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+ if [ ${md_rnd} != ${md_edev} ]; then
+ echo "ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ else
+ echo "not ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
+ fi
+ i=$((i+1))
+
+ geli detach md${no}
+ rm -f $rnd
+ mdconfig -d -u $no
+ done
+done
diff --git a/tools/regression/geom_eli/readonly.t b/tools/regression/geom_eli/readonly.t
new file mode 100644
index 0000000..f92e934
--- /dev/null
+++ b/tools/regression/geom_eli/readonly.t
@@ -0,0 +1,93 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+keyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..11"
+
+dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
+
+geli init -P -K $keyfile md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+
+geli attach -r -p -k $keyfile md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+
+sh -c "true >/dev/md${no}.eli" 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 3"
+else
+ echo "not ok 3"
+fi
+
+geli kill md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 4"
+else
+ echo "not ok 4"
+fi
+
+# kill should detach provider...
+if [ ! -c /dev/md{$no}.eli ]; then
+ echo "ok 5"
+else
+ echo "not ok 5"
+fi
+
+# ...but not destroy the metadata.
+geli attach -r -p -k $keyfile md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 6"
+else
+ echo "not ok 6"
+fi
+
+geli setkey -n 1 -P -K /dev/null md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 7"
+else
+ echo "not ok 7"
+fi
+
+geli delkey -n 0 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 8"
+else
+ echo "not ok 8"
+fi
+
+geli delkey -f -n 0 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 9"
+else
+ echo "not ok 9"
+fi
+
+geli list md${no}.eli | egrep '^Flags: .*READ-ONLY' >/dev/null
+if [ $? -eq 0 ]; then
+ echo "ok 10"
+else
+ echo "not ok 10"
+fi
+
+geli detach md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 11"
+else
+ echo "not ok 11"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile
diff --git a/tools/regression/geom_eli/setkey.t b/tools/regression/geom_eli/setkey.t
new file mode 100644
index 0000000..a219188
--- /dev/null
+++ b/tools/regression/geom_eli/setkey.t
@@ -0,0 +1,156 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+no=45
+sectors=100
+rnd=`mktemp /tmp/$base.XXXXXX` || exit 1
+keyfile1=`mktemp /tmp/$base.XXXXXX` || exit 1
+keyfile2=`mktemp /tmp/$base.XXXXXX` || exit 1
+keyfile3=`mktemp /tmp/$base.XXXXXX` || exit 1
+keyfile4=`mktemp /tmp/$base.XXXXXX` || exit 1
+keyfile5=`mktemp /tmp/$base.XXXXXX` || exit 1
+mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
+
+echo "1..16"
+
+dd if=/dev/random of=${rnd} bs=512 count=${sectors} >/dev/null 2>&1
+hash1=`dd if=${rnd} bs=512 count=${sectors} 2>/dev/null | md5`
+dd if=/dev/random of=${keyfile1} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile2} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile3} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile4} bs=512 count=16 >/dev/null 2>&1
+dd if=/dev/random of=${keyfile5} bs=512 count=16 >/dev/null 2>&1
+
+geli init -P -K $keyfile1 md${no}
+geli attach -p -k $keyfile1 md${no}
+
+dd if=${rnd} of=/dev/md${no}.eli bs=512 count=${sectors} 2>/dev/null
+rm -f $rnd
+hash2=`dd if=/dev/md${no}.eli bs=512 count=${sectors} 2>/dev/null | md5`
+
+# Change current key (0) for attached provider.
+geli setkey -P -K $keyfile2 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+geli detach md${no}
+
+# We cannot use keyfile1 anymore.
+geli attach -p -k $keyfile1 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+
+# Attach with new key.
+geli attach -p -k $keyfile2 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 3"
+else
+ echo "not ok 3"
+fi
+hash3=`dd if=/dev/md${no}.eli bs=512 count=${sectors} 2>/dev/null | md5`
+
+# Change key 1 for attached provider.
+geli setkey -n 1 -P -K $keyfile3 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 4"
+else
+ echo "not ok 4"
+fi
+geli detach md${no}
+
+# Attach with key 1.
+geli attach -p -k $keyfile3 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 5"
+else
+ echo "not ok 5"
+fi
+hash4=`dd if=/dev/md${no}.eli bs=512 count=${sectors} 2>/dev/null | md5`
+geli detach md${no}
+
+# Change current (1) key for detached provider.
+geli setkey -p -k $keyfile3 -P -K $keyfile4 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 6"
+else
+ echo "not ok 6"
+fi
+
+# We cannot use keyfile3 anymore.
+geli attach -p -k $keyfile3 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 7"
+else
+ echo "not ok 7"
+fi
+
+# Attach with key 1.
+geli attach -p -k $keyfile4 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 8"
+else
+ echo "not ok 8"
+fi
+hash5=`dd if=/dev/md${no}.eli bs=512 count=${sectors} 2>/dev/null | md5`
+geli detach md${no}
+
+# Change key 0 for detached provider.
+geli setkey -n 0 -p -k $keyfile4 -P -K $keyfile5 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 9"
+else
+ echo "not ok 9"
+fi
+
+# We cannot use keyfile2 anymore.
+geli attach -p -k $keyfile2 md${no} 2>/dev/null
+if [ $? -ne 0 ]; then
+ echo "ok 10"
+else
+ echo "not ok 10"
+fi
+
+# Attach with key 0.
+geli attach -p -k $keyfile5 md${no}
+if [ $? -eq 0 ]; then
+ echo "ok 11"
+else
+ echo "not ok 11"
+fi
+hash6=`dd if=/dev/md${no}.eli bs=512 count=${sectors} 2>/dev/null | md5`
+geli detach md${no}
+
+if [ ${hash1} = ${hash2} ]; then
+ echo "ok 12"
+else
+ echo "not ok 12"
+fi
+if [ ${hash1} = ${hash3} ]; then
+ echo "ok 13"
+else
+ echo "not ok 13"
+fi
+if [ ${hash1} = ${hash4} ]; then
+ echo "ok 14"
+else
+ echo "not ok 14"
+fi
+if [ ${hash1} = ${hash5} ]; then
+ echo "ok 15"
+else
+ echo "not ok 15"
+fi
+if [ ${hash1} = ${hash6} ]; then
+ echo "ok 16"
+else
+ echo "not ok 16"
+fi
+
+mdconfig -d -u $no
+rm -f $keyfile1 $keyfile2 $keyfile3 $keyfile4 $keyfile5
diff --git a/tools/regression/geom_gate/Makefile b/tools/regression/geom_gate/Makefile
new file mode 100644
index 0000000..c5c24ad
--- /dev/null
+++ b/tools/regression/geom_gate/Makefile
@@ -0,0 +1,8 @@
+#
+# $FreeBSD$
+#
+# Regression tests for geom_gate.
+#
+
+test:
+ @sh runtests.sh
diff --git a/tools/regression/geom_gate/runtests.sh b/tools/regression/geom_gate/runtests.sh
new file mode 100644
index 0000000..38089c5
--- /dev/null
+++ b/tools/regression/geom_gate/runtests.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# $FreeBSD$
+
+dir=`dirname $0`
+
+for ts in `dirname $0`/test-*.sh; do
+ sh $ts
+done
diff --git a/tools/regression/geom_gate/test-1.sh b/tools/regression/geom_gate/test-1.sh
new file mode 100644
index 0000000..44a4960
--- /dev/null
+++ b/tools/regression/geom_gate/test-1.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+us=45
+work="/dev/md${us}"
+src="/dev/md`expr $us + 1`"
+conf=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 1M -u `expr $us + 1` || exit 1
+dd if=/dev/random of=$work bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/random of=$src bs=1m count=1 >/dev/null 2>&1
+sum=`cat $src | md5 -q`
+
+echo "127.0.0.1 RW $work" > $conf
+ggated $conf
+ggatec create -u $us 127.0.0.1 $work
+
+dd if=${src} of=/dev/ggate${us} bs=1m count=1 >/dev/null 2>&1
+
+if [ `cat $work | md5 -q` != $sum ]; then
+ echo "FAIL"
+else
+ if [ `cat /dev/ggate${us} | md5 -q` != $sum ]; then
+ echo "FAIL"
+ else
+ echo "PASS"
+ fi
+fi
+
+ggatec destroy -u $us
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
+pkill ggated $conf
+rm -f $conf
diff --git a/tools/regression/geom_gate/test-1.t b/tools/regression/geom_gate/test-1.t
new file mode 100644
index 0000000..279e316
--- /dev/null
+++ b/tools/regression/geom_gate/test-1.t
@@ -0,0 +1,40 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+us=45
+work="/dev/md${us}"
+src="/dev/md`expr $us + 1`"
+conf=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 1M -u `expr $us + 1` || exit 1
+dd if=/dev/random of=$work bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/random of=$src bs=1m count=1 >/dev/null 2>&1
+sum=`cat $src | md5 -q`
+
+echo "127.0.0.1 RW $work" > $conf
+ggated $conf
+ggatec create -u $us 127.0.0.1 $work
+
+dd if=${src} of=/dev/ggate${us} bs=1m count=1 >/dev/null 2>&1
+
+echo '1..2'
+
+if [ `cat $work | md5 -q` != $sum ]; then
+ echo 'not ok 1 - md5 checksum'
+else
+ echo 'ok 1 - md5 checksum'
+
+ if [ `cat /dev/ggate${us} | md5 -q` != $sum ]; then
+ echo 'not ok 2 - md5 checksum'
+ else
+ echo 'ok 2 - md5 checksum'
+ fi
+fi
+
+ggatec destroy -u $us
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
+pkill ggated $conf
+rm -f $conf
diff --git a/tools/regression/geom_gate/test-2.sh b/tools/regression/geom_gate/test-2.sh
new file mode 100644
index 0000000..498ac45
--- /dev/null
+++ b/tools/regression/geom_gate/test-2.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+us=45
+work=`mktemp /tmp/$base.XXXXXX` || exit 1
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=$work bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/random of=$src bs=1m count=1 >/dev/null 2>&1
+sum=`md5 -q $src`
+
+ggatel create -u $us $work
+
+dd if=${src} of=/dev/ggate${us} bs=1m count=1 >/dev/null 2>&1
+
+if [ `md5 -q $work` != $sum ]; then
+ echo "FAIL"
+else
+ if [ `cat /dev/ggate${us} | md5 -q` != $sum ]; then
+ echo "FAIL"
+ else
+ echo "PASS"
+ fi
+fi
+
+ggatel destroy -u $us
+rm -f $work $src
diff --git a/tools/regression/geom_gate/test-2.t b/tools/regression/geom_gate/test-2.t
new file mode 100644
index 0000000..2e5e254
--- /dev/null
+++ b/tools/regression/geom_gate/test-2.t
@@ -0,0 +1,31 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+us=45
+work=`mktemp /tmp/$base.XXXXXX` || exit 1
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=$work bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/random of=$src bs=1m count=1 >/dev/null 2>&1
+sum=`md5 -q $src`
+
+ggatel create -u $us $work
+
+dd if=${src} of=/dev/ggate${us} bs=1m count=1 >/dev/null 2>&1
+
+echo '1..2'
+
+if [ `md5 -q $work` != $sum ]; then
+ echo 'not ok 1 - md5 checksum'
+else
+ echo 'ok 1 - md5 checksum'
+ if [ `cat /dev/ggate${us} | md5 -q` != $sum ]; then
+ echo 'not ok 2 - md5 checksum'
+ else
+ echo 'ok 2 - md5 checksum'
+ fi
+fi
+
+ggatel destroy -u $us
+rm -f $work $src
diff --git a/tools/regression/geom_gate/test-3.sh b/tools/regression/geom_gate/test-3.sh
new file mode 100644
index 0000000..ca73a5a
--- /dev/null
+++ b/tools/regression/geom_gate/test-3.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+us=45
+work="/dev/md${us}"
+src="/dev/md`expr $us + 1`"
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 1M -u `expr $us + 1` || exit 1
+dd if=/dev/random of=$work bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/random of=$src bs=1m count=1 >/dev/null 2>&1
+sum=`cat $src | md5 -q`
+
+ggatel create -u $us $work
+
+dd if=${src} of=/dev/ggate${us} bs=1m count=1 >/dev/null 2>&1
+
+if [ `cat $work | md5 -q` != $sum ]; then
+ echo "FAIL"
+else
+ if [ `cat /dev/ggate${us} | md5 -q` != $sum ]; then
+ echo "FAIL"
+ else
+ echo "PASS"
+ fi
+fi
+
+ggatel destroy -u $us
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
diff --git a/tools/regression/geom_gate/test-3.t b/tools/regression/geom_gate/test-3.t
new file mode 100644
index 0000000..ba2b3c7
--- /dev/null
+++ b/tools/regression/geom_gate/test-3.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+us=45
+work="/dev/md${us}"
+src="/dev/md`expr $us + 1`"
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 1M -u `expr $us + 1` || exit 1
+dd if=/dev/random of=$work bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/random of=$src bs=1m count=1 >/dev/null 2>&1
+sum=`cat $src | md5 -q`
+
+ggatel create -u $us $work
+
+dd if=${src} of=/dev/ggate${us} bs=1m count=1 >/dev/null 2>&1
+
+echo '1..2'
+
+if [ `cat $work | md5 -q` != $sum ]; then
+ echo 'not ok 1 - md5 checksum'
+else
+ echo 'ok 1 - md5 checksum'
+ if [ `cat /dev/ggate${us} | md5 -q` != $sum ]; then
+ echo 'not ok 2 - md5 checksum'
+ else
+ echo 'ok 2 - md5 checksum'
+ fi
+fi
+
+ggatel destroy -u $us
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
diff --git a/tools/regression/geom_gpt/gctl.t b/tools/regression/geom_gpt/gctl.t
new file mode 100644
index 0000000..f99e6d8
--- /dev/null
+++ b/tools/regression/geom_gpt/gctl.t
@@ -0,0 +1,207 @@
+#!/usr/bin/env perl -w
+#
+# Copyright (c) 2005, 2006 Marcel Moolenaar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+
+my $srcdir = `dirname $0`;
+chomp $srcdir;
+
+my $cmd = "/tmp/gctl-$$";
+my $out = "$cmd.out";
+my $disk = "/tmp/disk-$$";
+my $mntpt = "/tmp/mount-$$";
+
+my %steps = (
+ "000" => "gctl",
+ "001" => "gctl verb=bogus",
+ "010" => "gctl verb=create",
+ "011" => "gctl verb=create provider=bogus",
+ "020" => "mdcfg create pristine",
+ "021" => "gctl verb=create provider=%dev% entries=-1",
+ "022" => "gctl verb=create provider=%dev% entries=128",
+ "023" => "gctl verb=create provider=%dev%",
+ "024" => "gctl verb=modify geom=%dev%",
+ "025" => "conf",
+ "030" => "gctl verb=add",
+ "031" => "gctl verb=add geom=bogus",
+ "032" => "gctl verb=add geom=%dev%",
+ "033" => "gctl verb=add geom=%dev% type=bogus",
+ "034" => "gctl verb=add geom=%dev% type=ed0101b0-2a71-11da-ba81-003048416ace",
+ "035" => "gctl verb=add geom=%dev% type=ed0101b0-2a71-11da-ba81-003048416ace start=1",
+ "036" => "gctl verb=add geom=%dev% type=ed0101b0-2a71-11da-ba81-003048416ace start=34",
+ "037" => "gctl verb=add geom=%dev% type=ed0101b0-2a71-11da-ba81-003048416ace start=34 end=12345678",
+ "038" => "gctl verb=add geom=%dev% type=ed0101b0-2a71-11da-ba81-003048416ace start=162 end=417 entry=129",
+ "039" => "gctl verb=add geom=%dev% type=ed0101b0-2a71-11da-ba81-003048416ace start=162 end=417 entry:8=5",
+ "040" => "gctl verb=add geom=%dev% type=83d34ed5-c4ff-11da-b65b-000347c5d7f3 start=34 end=161 entry=5",
+ "041" => "gctl verb=add geom=%dev% type=83d34ed5-c4ff-11da-b65b-000347c5d7f3 start=34 end=546",
+ "042" => "gctl verb=add geom=%dev% type=83d34ed5-c4ff-11da-b65b-000347c5d7f3 start=162 end=417",
+ "043" => "gctl verb=add geom=%dev% type=83d34ed5-c4ff-11da-b65b-000347c5d7f3 start=100 end=300",
+ "044" => "gctl verb=add geom=%dev% type=83d34ed5-c4ff-11da-b65b-000347c5d7f3 start=300 end=500",
+ "045" => "gctl verb=add geom=%dev% type=83d34ed5-c4ff-11da-b65b-000347c5d7f3 start=34 end=161 entry:8",
+ "046" => "gctl verb=add geom=%dev% type=d2bd4509-c4ff-11da-b4cc-00306e39b62f start=418 end=546 entry:8",
+ "047" => "conf",
+ "050" => "gctl verb=remove geom=%dev% entry=5",
+ "051" => "gctl verb=remove geom=%dev% entry=2",
+ "052" => "gctl verb=remove geom=%dev% entry=1",
+ "053" => "gctl verb=remove geom=%dev% entry=1",
+ "054" => "conf",
+ "060" => "gctl verb=add geom=%dev% type=516e7cb6-6ecf-11d6-8ff8-00022d09712b start=34 end=546 entry:8=1",
+ "061" => "mount %dev%p1",
+ "062" => "gctl verb=remove geom=%dev% entry=1",
+ "063" => "umount %dev%p1",
+ "064" => "gctl verb=remove geom=%dev% entry=1",
+ "065" => "conf",
+ "100" => "mdcfg destroy",
+ "110" => "mdcfg create corrupted",
+ "111" => "gctl verb=add geom=%dev%",
+ "120" => "mdcfg destroy",
+);
+
+my %result = (
+ "000" => "FAIL Verb missing",
+ "001" => "FAIL 22 verb 'bogus'",
+ "010" => "FAIL 87 provider",
+ "011" => "FAIL 22 provider 'bogus'",
+ "020" => "",
+ "021" => "FAIL 22 entries -1",
+ "022" => "PASS",
+ "023" => "FAIL 17 geom '%dev%'",
+ "024" => "FAIL 87 entry",
+ "025" => "b1856477950e5786898c8f01361196cf",
+ "030" => "FAIL 87 geom",
+ "031" => "FAIL 22 geom 'bogus'",
+ "032" => "FAIL 87 type",
+ "033" => "FAIL 22 type 'bogus'",
+ "034" => "FAIL 87 start",
+ "035" => "FAIL 22 start 1",
+ "036" => "FAIL 87 end",
+ "037" => "FAIL 22 end 12345678",
+ "038" => "FAIL 22 entry 129",
+ "039" => "PASS entry=5",
+ "040" => "FAIL 17 entry 5",
+ "041" => "FAIL 28 start/end 34/546",
+ "042" => "FAIL 28 start/end 162/417",
+ "043" => "FAIL 28 start/end 100/300",
+ "044" => "FAIL 28 start/end 300/500",
+ "045" => "PASS entry=1",
+ "046" => "PASS entry=2",
+ "047" => "50783a39eecfc62a29db24381e12b9d8",
+ "050" => "PASS",
+ "051" => "PASS",
+ "052" => "PASS",
+ "053" => "FAIL 2 entry 1",
+ "054" => "b1856477950e5786898c8f01361196cf",
+ "060" => "PASS",
+ "061" => "PASS",
+ "062" => "FAIL 16",
+ "063" => "PASS",
+ "064" => "PASS",
+ "065" => "b1856477950e5786898c8f01361196cf",
+ "100" => "",
+ "110" => "",
+ "111" => "FAIL 6 geom '%dev%'",
+ "120" => "",
+);
+
+my $verbose = "";
+if (exists $ENV{'TEST_VERBOSE'}) {
+ $verbose = "-v";
+}
+
+# Compile the driver...
+my $st = system("cc -o $cmd -g $srcdir/test.c -lgeom");
+if ($st != 0) {
+ print "1..0 # SKIP error compiling test.c\n";
+ exit 0;
+}
+
+# Make sure we have permission to use gctl...
+if (`$cmd` =~ "^FAIL Permission denied") {
+ print "1..0 # SKIP not enough permission\n";
+ unlink $cmd;
+ exit 0;
+}
+
+$count = keys (%steps);
+print "1..$count\n";
+
+my $nr = 1;
+my $dev = "n/a";
+foreach my $key (sort keys %steps) {
+ my ($action, $args) = split(/ /, $steps{$key}, 2);
+ my $res = $result{$key};
+ $args = "" if (not defined $args);
+ $args =~ s/%dev%/$dev/g;
+ $res =~ s/%dev%/$dev/g;
+
+ if ($action =~ "^gctl") {
+ system("$cmd $verbose $args | tee $out 2>&1");
+ $st = `tail -1 $out`;
+ if ($st =~ "^$res") {
+ print "ok $nr \# gctl($key)\n";
+ } else {
+ print "not ok $nr \# gctl($key) - $st\n";
+ }
+ unlink $out;
+ } elsif ($action =~ "^mdcfg") {
+ if ($args =~ "^create") {
+ system("dd if=/dev/zero of=$disk count=1024 2>&1");
+ if ($args =~ "corrupted") {
+ system("gpt create -p $disk");
+ }
+ $dev = `mdconfig -a -t vnode -f $disk`;
+ chomp $dev;
+ } elsif ($args =~ "^destroy") {
+ $dev =~ s/md/-u /g;
+ system("mdconfig -d $dev");
+ unlink $disk;
+ $dev = "n/a";
+ }
+ print "ok $nr \# mdcfg($key)\n";
+ } elsif ($action =~ "^conf") {
+ system("sysctl -b kern.geom.conftxt | grep -a $dev | sed -e s:$disk:DISK:g -e s:$dev:DEV:g | sort | md5 -p | tee $out 2>&1");
+ $st = `tail -1 $out`;
+ if ($st =~ "^$res") {
+ print "ok $nr \# conf($key)\n";
+ } else {
+ print "not ok $nr \# conf($key) - $st\n";
+ }
+ unlink $out;
+ } elsif ($action =~ "^mount") {
+ system("mkdir $mntpt-$args");
+ system("newfs $args");
+ system("mount -t ufs /dev/$args $mntpt-$args");
+ print "ok $nr \# mount($key)\n";
+ } elsif ($action =~ "^umount") {
+ system("umount $mntpt-$args");
+ system("rmdir $mntpt-$args");
+ print "ok $nr \# umount($key)\n";
+ }
+ $nr += 1;
+}
+
+unlink $cmd;
+exit 0;
diff --git a/tools/regression/geom_gpt/test.c b/tools/regression/geom_gpt/test.c
new file mode 100644
index 0000000..d750d30
--- /dev/null
+++ b/tools/regression/geom_gpt/test.c
@@ -0,0 +1,165 @@
+/*-
+ * Copyright (c) 2005, 2006 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <errno.h>
+#include <libgeom.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+struct retval {
+ struct retval *retval;
+ const char *param;
+ char *value;
+};
+
+struct retval *retval;
+int verbose;
+
+static void
+usage()
+{
+ fprintf(stdout, "usage: %s [-v] param[:len][=value] ...\n",
+ getprogname());
+ exit(1);
+}
+
+static int
+parse(char *arg, char **param, char **value, int *len)
+{
+ char *e, *colon, *equal;
+
+ if (*arg == '\0')
+ return (EINVAL);
+
+ colon = strchr(arg, ':');
+ equal = strchr(arg, '=');
+ if (colon == NULL && equal == NULL)
+ return (EINVAL);
+ if (colon == arg || equal == arg)
+ return (EINVAL);
+ if (colon != NULL && equal != NULL && equal < colon)
+ return (EINVAL);
+
+ if (colon != NULL)
+ *colon++ = '\0';
+ if (equal != NULL)
+ *equal++ = '\0';
+
+ *param = arg;
+ if (colon != NULL) {
+ /* Length specification. This parameter is RW. */
+ if (*colon == '\0')
+ return (EINVAL);
+ *len = strtol(colon, &e, 0);
+ if (*e != '\0')
+ return (EINVAL);
+ if (*len <= 0 || *len > PATH_MAX)
+ return (EINVAL);
+ *value = malloc(*len);
+ if (*value == NULL)
+ return (ENOMEM);
+ memset(*value, 0, *len);
+ if (equal != NULL) {
+ if (strlen(equal) >= PATH_MAX)
+ return (ENOMEM);
+ strcpy(*value, equal);
+ }
+ } else {
+ /* This parameter is RO. */
+ *len = -1;
+ if (*equal == '\0')
+ return (EINVAL);
+ *value = equal;
+ }
+
+ return (0);
+}
+
+int main(int argc, char *argv[])
+{
+ struct retval *rv;
+ struct gctl_req *req;
+ char *param, *value;
+ const char *s;
+ int c, len;
+
+ req = gctl_get_handle();
+ gctl_ro_param(req, "class", -1, "GPT");
+
+ while ((c = getopt(argc, argv, "v")) != -1) {
+ switch (c) {
+ case 'v':
+ verbose = 1;
+ break;
+ case '?':
+ default:
+ usage();
+ /* NOTREACHED */
+ break;
+ }
+ }
+
+ while (optind < argc) {
+ if (!parse(argv[optind++], &param, &value, &len)) {
+ if (len > 0) {
+ rv = malloc(sizeof(struct retval));
+ rv->param = param;
+ rv->value = value;
+ rv->retval = retval;
+ retval = rv;
+ gctl_rw_param(req, param, len, value);
+ } else
+ gctl_ro_param(req, param, -1, value);
+ }
+ }
+
+ if (verbose)
+ gctl_dump(req, stdout);
+
+ s = gctl_issue(req);
+ if (s == NULL) {
+ printf("PASS");
+ while (retval != NULL) {
+ rv = retval->retval;
+ printf(" %s=%s", retval->param, retval->value);
+ free(retval->value);
+ free(retval);
+ retval = rv;
+ }
+ printf("\n");
+ } else
+ printf("FAIL %s\n", s);
+
+ gctl_free(req);
+ return (0);
+}
diff --git a/tools/regression/geom_mirror/conf.sh b/tools/regression/geom_mirror/conf.sh
new file mode 100644
index 0000000..8a60a16
--- /dev/null
+++ b/tools/regression/geom_mirror/conf.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# $FreeBSD$
+
+name="test"
+class="mirror"
+base=`basename $0`
+
+. `dirname $0`/../geom_subr.sh
diff --git a/tools/regression/geom_mirror/test-1.t b/tools/regression/geom_mirror/test-1.t
new file mode 100644
index 0000000..b07a8d1
--- /dev/null
+++ b/tools/regression/geom_mirror/test-1.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+
+mdconfig -a -t malloc -s 1M -u $us0 || exit 1
+mdconfig -a -t malloc -s 2M -u $us1 || exit 1
+mdconfig -a -t malloc -s 3M -u $us2 || exit 1
+
+gmirror label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+# Size of created device should be 1MB - 512b.
+
+size=`diskinfo /dev/mirror/${name} | awk '{print $3}'`
+
+if [ $size -eq 1048064 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+
+gmirror remove $name md${us0}
+gmirror remove $name md${us1}
+gmirror remove $name md${us2}
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
diff --git a/tools/regression/geom_mirror/test-2.t b/tools/regression/geom_mirror/test-2.t
new file mode 100644
index 0000000..3fb0822
--- /dev/null
+++ b/tools/regression/geom_mirror/test-2.t
@@ -0,0 +1,59 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..4"
+
+balance="round-robin"
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+gmirror label -b $balance $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/mirror/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+dd if=/dev/md${us0} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 2"
+else
+ echo "ok 2"
+fi
+dd if=/dev/md${us1} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 3"
+else
+ echo "ok 3"
+fi
+
+dd if=/dev/md${us2} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 4"
+else
+ echo "ok 4"
+fi
+
+gmirror remove $name md${us0} md${us1} md${us2}
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_mirror/test-3.t b/tools/regression/geom_mirror/test-3.t
new file mode 100644
index 0000000..5bdd2ab
--- /dev/null
+++ b/tools/regression/geom_mirror/test-3.t
@@ -0,0 +1,70 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..5"
+
+balance="round-robin"
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+gmirror label -b $balance $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/mirror/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+gmirror remove $name md${us0}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 2"
+else
+ echo "ok 2"
+fi
+
+gmirror remove $name md${us1}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 3"
+else
+ echo "ok 3"
+fi
+
+gmirror remove $name md${us2}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 4"
+else
+ echo "ok 4"
+fi
+
+# mirror/${name} should be removed.
+if [ -c /dev/${name} ]; then
+ echo "not ok 5"
+else
+ echo "ok 5"
+fi
+
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_mirror/test-4.t b/tools/regression/geom_mirror/test-4.t
new file mode 100644
index 0000000..0786bdb
--- /dev/null
+++ b/tools/regression/geom_mirror/test-4.t
@@ -0,0 +1,70 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..5"
+
+balance="load"
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+gmirror label -b $balance $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/mirror/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+gmirror remove $name md${us0}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 2"
+else
+ echo "ok 2"
+fi
+
+gmirror remove $name md${us1}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 3"
+else
+ echo "ok 3"
+fi
+
+gmirror remove $name md${us2}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 4"
+else
+ echo "ok 4"
+fi
+
+# mirror/${name} should be removed.
+if [ -c /dev/${name} ]; then
+ echo "not ok 5"
+else
+ echo "ok 5"
+fi
+
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_mirror/test-5.t b/tools/regression/geom_mirror/test-5.t
new file mode 100644
index 0000000..5b0a5ed
--- /dev/null
+++ b/tools/regression/geom_mirror/test-5.t
@@ -0,0 +1,70 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..5"
+
+balance="split"
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=8192
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+gmirror label -b $balance -s `expr $ddbs / 2` $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/mirror/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+gmirror remove $name md${us0}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 2"
+else
+ echo "ok 2"
+fi
+
+gmirror remove $name md${us1}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 3"
+else
+ echo "ok 3"
+fi
+
+gmirror remove $name md${us2}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 4"
+else
+ echo "ok 4"
+fi
+
+# mirror/${name} should be removed.
+if [ -c /dev/${name} ]; then
+ echo "not ok 5"
+else
+ echo "ok 5"
+fi
+
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_mirror/test-6.t b/tools/regression/geom_mirror/test-6.t
new file mode 100644
index 0000000..ec86d06
--- /dev/null
+++ b/tools/regression/geom_mirror/test-6.t
@@ -0,0 +1,52 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..2"
+
+balance="split"
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=8192
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+gmirror label -b $balance -s `expr $ddbs / 2` $name /dev/md${us0} /dev/md${us1} || exit 1
+devwait
+
+dd if=${src} of=/dev/mirror/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+dd if=/dev/zero of=/dev/md${us2} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+# Connect disk to the mirror.
+gmirror insert ${name} md${us2}
+# Wait for synchronization.
+sleep 1
+dd if=/dev/md${us2} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 2"
+else
+ echo "ok 2"
+fi
+
+gmirror remove $name md${us0} md${us1} md${us2}
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_mirror/test-7.t b/tools/regression/geom_mirror/test-7.t
new file mode 100644
index 0000000..c911c03
--- /dev/null
+++ b/tools/regression/geom_mirror/test-7.t
@@ -0,0 +1,70 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..5"
+
+balance="prefer"
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+gmirror label -b $balance $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/mirror/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+gmirror remove $name md${us0}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 2"
+else
+ echo "ok 2"
+fi
+
+gmirror remove $name md${us1}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 3"
+else
+ echo "ok 3"
+fi
+
+gmirror remove $name md${us2}
+dd if=/dev/mirror/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 4"
+else
+ echo "ok 4"
+fi
+
+# mirror/${name} should be removed.
+if [ -c /dev/${name} ]; then
+ echo "not ok 5"
+else
+ echo "ok 5"
+fi
+
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_nop/conf.sh b/tools/regression/geom_nop/conf.sh
new file mode 100644
index 0000000..0dc9797
--- /dev/null
+++ b/tools/regression/geom_nop/conf.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+# $FreeBSD$
+
+class="nop"
+base=`basename $0`
+
+. `dirname $0`/../geom_subr.sh
diff --git a/tools/regression/geom_nop/test-1.t b/tools/regression/geom_nop/test-1.t
new file mode 100644
index 0000000..f08f71d
--- /dev/null
+++ b/tools/regression/geom_nop/test-1.t
@@ -0,0 +1,25 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us=45
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+
+gnop create /dev/md${us} || exit 1
+
+# Size of created device should be 1MB.
+
+size=`diskinfo /dev/md${us}.nop | awk '{print $3}'`
+
+if [ $size -eq 1048576 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+
+gnop destroy md${us}.nop
+mdconfig -d -u $us
diff --git a/tools/regression/geom_nop/test-2.t b/tools/regression/geom_nop/test-2.t
new file mode 100644
index 0000000..e0ddb17
--- /dev/null
+++ b/tools/regression/geom_nop/test-2.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+us=45
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+echo "1..1"
+
+dd if=/dev/random of=${src} bs=1m count=1 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+
+gnop create /dev/md${us} || exit 1
+
+dd if=${src} of=/dev/md${us}.nop bs=1m count=1 >/dev/null 2>&1
+dd if=/dev/md${us}.nop of=${dst} bs=1m count=1 >/dev/null 2>&1
+
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+gnop destroy md${us}.nop
+mdconfig -d -u $us
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/conf.sh b/tools/regression/geom_raid3/conf.sh
new file mode 100644
index 0000000..93e7dea
--- /dev/null
+++ b/tools/regression/geom_raid3/conf.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# $FreeBSD$
+
+name="test"
+class="raid3"
+base=`basename $0`
+
+. `dirname $0`/../geom_subr.sh
diff --git a/tools/regression/geom_raid3/test-1.t b/tools/regression/geom_raid3/test-1.t
new file mode 100644
index 0000000..9202967
--- /dev/null
+++ b/tools/regression/geom_raid3/test-1.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..2"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+
+mdconfig -a -t malloc -s 1M -u $us0 || exit 1
+mdconfig -a -t malloc -s 2M -u $us1 || exit 1
+mdconfig -a -t malloc -s 3M -u $us2 || exit 1
+
+graid3 label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} 2>/dev/null || exit 1
+devwait
+
+# Size of created device should be 2MB - 1024B.
+
+mediasize=`diskinfo /dev/raid3/${name} | awk '{print $3}'`
+if [ $mediasize -eq 2096128 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+sectorsize=`diskinfo /dev/raid3/${name} | awk '{print $2}'`
+if [ $sectorsize -eq 1024 ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
diff --git a/tools/regression/geom_raid3/test-10.t b/tools/regression/geom_raid3/test-10.t
new file mode 100644
index 0000000..1320120
--- /dev/null
+++ b/tools/regression/geom_raid3/test-10.t
@@ -0,0 +1,39 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label -r $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/test-11.t b/tools/regression/geom_raid3/test-11.t
new file mode 100644
index 0000000..3382214
--- /dev/null
+++ b/tools/regression/geom_raid3/test-11.t
@@ -0,0 +1,39 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label -w $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/test-12.t b/tools/regression/geom_raid3/test-12.t
new file mode 100644
index 0000000..3dec406
--- /dev/null
+++ b/tools/regression/geom_raid3/test-12.t
@@ -0,0 +1,46 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+nblocks1=9
+nblocks2=`expr $nblocks1 - 1`
+nblocks3=`expr $nblocks2 / 2`
+
+mdconfig -a -t malloc -s $nblocks1 -u $us0 || exit 1
+mdconfig -a -t malloc -s $nblocks1 -u $us1 || exit 1
+mdconfig -a -t malloc -s $nblocks1 -u $us2 || exit 1
+
+dd if=/dev/random of=/dev/md${us0} count=$nblocks1 >/dev/null 2>&1
+dd if=/dev/random of=/dev/md${us1} count=$nblocks1 >/dev/null 2>&1
+dd if=/dev/random of=/dev/md${us2} count=$nblocks1 >/dev/null 2>&1
+
+graid3 label -w $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+# Wait for synchronization.
+sleep 2
+graid3 stop $name
+# Break one component.
+dd if=/dev/random of=/dev/md${us1} count=$nblocks2 >/dev/null 2>&1
+# Provoke retaste of the rest components.
+true > /dev/md${us0}
+true > /dev/md${us2}
+sleep 1
+
+dd if=/dev/raid3/${name} of=/dev/null bs=1k count=$nblocks3 >/dev/null 2>&1
+ec=$?
+if [ $ec -eq 0 ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
diff --git a/tools/regression/geom_raid3/test-2.t b/tools/regression/geom_raid3/test-2.t
new file mode 100644
index 0000000..88daf78
--- /dev/null
+++ b/tools/regression/geom_raid3/test-2.t
@@ -0,0 +1,39 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/test-3.t b/tools/regression/geom_raid3/test-3.t
new file mode 100644
index 0000000..d2c1a5f
--- /dev/null
+++ b/tools/regression/geom_raid3/test-3.t
@@ -0,0 +1,43 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+#
+# Reading without one DATA component (so with parity).
+#
+graid3 remove -n 1 $name
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/test-4.t b/tools/regression/geom_raid3/test-4.t
new file mode 100644
index 0000000..d437ec0
--- /dev/null
+++ b/tools/regression/geom_raid3/test-4.t
@@ -0,0 +1,43 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+#
+# Writing without one DATA component.
+#
+graid3 remove -n 1 $name
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/test-5.t b/tools/regression/geom_raid3/test-5.t
new file mode 100644
index 0000000..ffd85f6
--- /dev/null
+++ b/tools/regression/geom_raid3/test-5.t
@@ -0,0 +1,43 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+#
+# Writing without PARITY component.
+#
+graid3 remove -n 2 $name
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/test-6.t b/tools/regression/geom_raid3/test-6.t
new file mode 100644
index 0000000..97b5503
--- /dev/null
+++ b/tools/regression/geom_raid3/test-6.t
@@ -0,0 +1,47 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+#
+# Rebuild of DATA component.
+#
+graid3 remove -n 1 $name
+dd if=/dev/zero of=/dev/md${us1} bs=512 count=`expr $nblocks1 + 1` >/dev/null 2>&1
+graid3 insert -n 1 $name md${us1}
+sleep 1
+
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/test-7.t b/tools/regression/geom_raid3/test-7.t
new file mode 100644
index 0000000..3d89873
--- /dev/null
+++ b/tools/regression/geom_raid3/test-7.t
@@ -0,0 +1,50 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+#
+# Rebuild of PARITY component.
+#
+graid3 remove -n 2 $name
+dd if=/dev/zero of=/dev/md${us2} bs=512 count=`expr $nblocks1 + 1` >/dev/null 2>&1
+graid3 insert -n 2 $name md${us2}
+sleep 1
+# Remove DATA component, so PARITY component can be used while reading.
+graid3 remove -n 1 $name
+dd if=/dev/zero of=/dev/md${us1} bs=512 count=`expr $nblocks1 + 1` >/dev/null 2>&1
+
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/test-8.t b/tools/regression/geom_raid3/test-8.t
new file mode 100644
index 0000000..b9621f4
--- /dev/null
+++ b/tools/regression/geom_raid3/test-8.t
@@ -0,0 +1,46 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+#
+# Writing without DATA component and rebuild of DATA component.
+#
+graid3 remove -n 1 $name
+dd if=/dev/zero of=/dev/md${us1} bs=512 count=`expr $nblocks1 + 1` >/dev/null 2>&1
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+graid3 insert -n 1 $name md${us1}
+sleep 1
+
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_raid3/test-9.t b/tools/regression/geom_raid3/test-9.t
new file mode 100644
index 0000000..0695011
--- /dev/null
+++ b/tools/regression/geom_raid3/test-9.t
@@ -0,0 +1,49 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+ddbs=2048
+nblocks1=1024
+nblocks2=`expr $nblocks1 / \( $ddbs / 512 \)`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us0 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us1 || exit 1
+mdconfig -a -t malloc -s `expr $nblocks1 + 1` -u $us2 || exit 1
+
+graid3 label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+#
+# Writing without PARITY component and rebuild of PARITY component.
+#
+graid3 remove -n 2 $name
+dd if=/dev/zero of=/dev/md${us2} bs=512 count=`expr $nblocks1 + 1` >/dev/null 2>&1
+dd if=${src} of=/dev/raid3/${name} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+graid3 insert -n 2 $name md${us2}
+sleep 1
+# Remove DATA component, so PARITY component can be used while reading.
+graid3 remove -n 1 $name
+dd if=/dev/zero of=/dev/md${us1} bs=512 count=`expr $nblocks1 + 1` >/dev/null 2>&1
+
+dd if=/dev/raid3/${name} of=${dst} bs=$ddbs count=$nblocks2 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+graid3 stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_shsec/conf.sh b/tools/regression/geom_shsec/conf.sh
new file mode 100644
index 0000000..7648862
--- /dev/null
+++ b/tools/regression/geom_shsec/conf.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# $FreeBSD$
+
+name="test"
+class="shsec"
+base=`basename $0`
+
+. `dirname $0`/../geom_subr.sh
diff --git a/tools/regression/geom_shsec/test-1.t b/tools/regression/geom_shsec/test-1.t
new file mode 100644
index 0000000..5cb5b4f
--- /dev/null
+++ b/tools/regression/geom_shsec/test-1.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..2"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+
+mdconfig -a -t malloc -s 1M -u $us0 || exit 1
+mdconfig -a -t malloc -s 2M -u $us1 || exit 1
+mdconfig -a -t malloc -s 3M -u $us2 || exit 1
+
+gshsec label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} 2>/dev/null || exit 1
+devwait
+
+# Size of created device should be 1MB - 512B.
+
+mediasize=`diskinfo /dev/shsec/${name} | awk '{print $3}'`
+if [ $mediasize -eq 1048064 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+sectorsize=`diskinfo /dev/shsec/${name} | awk '{print $2}'`
+if [ $sectorsize -eq 512 ]; then
+ echo "ok 2"
+else
+ echo "not ok 2"
+fi
+
+gshsec stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
diff --git a/tools/regression/geom_shsec/test-2.t b/tools/regression/geom_shsec/test-2.t
new file mode 100644
index 0000000..19a4e0a
--- /dev/null
+++ b/tools/regression/geom_shsec/test-2.t
@@ -0,0 +1,59 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..4"
+
+us0=45
+us1=`expr $us0 + 1`
+us2=`expr $us0 + 2`
+nblocks1=1024
+nblocks2=`expr $nblocks1 + 1`
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} count=$nblocks1 >/dev/null 2>&1
+
+mdconfig -a -t malloc -s $nblocks2 -u $us0 || exit 1
+mdconfig -a -t malloc -s $nblocks2 -u $us1 || exit 1
+mdconfig -a -t malloc -s $nblocks2 -u $us2 || exit 1
+
+gshsec label $name /dev/md${us0} /dev/md${us1} /dev/md${us2} || exit 1
+devwait
+
+dd if=${src} of=/dev/shsec/${name} count=$nblocks1 >/dev/null 2>&1
+
+dd if=/dev/shsec/${name} of=${dst} count=$nblocks1 >/dev/null 2>&1
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+dd if=/dev/md${us0} of=${dst} count=$nblocks1 >/dev/null 2>&1
+if [ `md5 -q ${src}` = `md5 -q ${dst}` ]; then
+ echo "not ok 2"
+else
+ echo "ok 2"
+fi
+
+dd if=/dev/md${us1} of=${dst} count=$nblocks1 >/dev/null 2>&1
+if [ `md5 -q ${src}` = `md5 -q ${dst}` ]; then
+ echo "not ok 3"
+else
+ echo "ok 3"
+fi
+
+dd if=/dev/md${us2} of=${dst} count=$nblocks1 >/dev/null 2>&1
+if [ `md5 -q ${src}` = `md5 -q ${dst}` ]; then
+ echo "not ok 4"
+else
+ echo "ok 4"
+fi
+
+gshsec stop $name
+mdconfig -d -u $us0
+mdconfig -d -u $us1
+mdconfig -d -u $us2
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_stripe/conf.sh b/tools/regression/geom_stripe/conf.sh
new file mode 100644
index 0000000..22e5864
--- /dev/null
+++ b/tools/regression/geom_stripe/conf.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# $FreeBSD$
+
+name="test"
+class="stripe"
+base=`basename $0`
+
+. `dirname $0`/../geom_subr.sh
diff --git a/tools/regression/geom_stripe/test-1.t b/tools/regression/geom_stripe/test-1.t
new file mode 100644
index 0000000..9b398f0
--- /dev/null
+++ b/tools/regression/geom_stripe/test-1.t
@@ -0,0 +1,30 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us=45
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 2M -u `expr $us + 1` || exit 1
+mdconfig -a -t malloc -s 3M -u `expr $us + 2` || exit 1
+
+gstripe create -s 16384 $name /dev/md${us} /dev/md`expr $us + 1` /dev/md`expr $us + 2` || exit 1
+devwait
+
+# Size of created device should be 1MB * 3.
+
+size=`diskinfo /dev/stripe/${name} | awk '{print $3}'`
+
+if [ $size -eq 3145728 ]; then
+ echo "ok 1"
+else
+ echo "not ok 1"
+fi
+
+gstripe destroy $name
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
+mdconfig -d -u `expr $us + 2`
diff --git a/tools/regression/geom_stripe/test-2.t b/tools/regression/geom_stripe/test-2.t
new file mode 100644
index 0000000..73937f4
--- /dev/null
+++ b/tools/regression/geom_stripe/test-2.t
@@ -0,0 +1,35 @@
+#!/bin/sh
+# $FreeBSD$
+
+. `dirname $0`/conf.sh
+
+echo "1..1"
+
+us=45
+tsize=3
+src=`mktemp /tmp/$base.XXXXXX` || exit 1
+dst=`mktemp /tmp/$base.XXXXXX` || exit 1
+
+dd if=/dev/random of=${src} bs=1m count=$tsize >/dev/null 2>&1
+
+mdconfig -a -t malloc -s 1M -u $us || exit 1
+mdconfig -a -t malloc -s 2M -u `expr $us + 1` || exit 1
+mdconfig -a -t malloc -s 3M -u `expr $us + 2` || exit 1
+
+gstripe create -s 8192 $name /dev/md${us} /dev/md`expr $us + 1` /dev/md`expr $us + 2` || exit 1
+devwait
+
+dd if=${src} of=/dev/stripe/${name} bs=1m count=$tsize >/dev/null 2>&1
+dd if=/dev/stripe/${name} of=${dst} bs=1m count=$tsize >/dev/null 2>&1
+
+if [ `md5 -q ${src}` != `md5 -q ${dst}` ]; then
+ echo "not ok 1"
+else
+ echo "ok 1"
+fi
+
+gstripe destroy $name
+mdconfig -d -u $us
+mdconfig -d -u `expr $us + 1`
+mdconfig -d -u `expr $us + 2`
+rm -f ${src} ${dst}
diff --git a/tools/regression/geom_subr.sh b/tools/regression/geom_subr.sh
new file mode 100644
index 0000000..6047829
--- /dev/null
+++ b/tools/regression/geom_subr.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+# $FreeBSD$
+
+kldstat -q -m g_${class} || g${class} load || exit 1
+
+devwait()
+{
+ while :; do
+ if [ -c /dev/${class}/${name} ]; then
+ return
+ fi
+ sleep 0.2
+ done
+}
diff --git a/tools/regression/geom_uzip/.cvsignore b/tools/regression/geom_uzip/.cvsignore
new file mode 100644
index 0000000..1e4f164
--- /dev/null
+++ b/tools/regression/geom_uzip/.cvsignore
@@ -0,0 +1,2 @@
+test-1.img
+test-1.img.gz
diff --git a/tools/regression/geom_uzip/Makefile b/tools/regression/geom_uzip/Makefile
new file mode 100644
index 0000000..6927ff1
--- /dev/null
+++ b/tools/regression/geom_uzip/Makefile
@@ -0,0 +1,23 @@
+#
+# $FreeBSD$
+#
+# Regression test for geom_ugz.
+#
+
+IMAGE= test-1.img
+ZIMAGE= ${IMAGE}.uzip
+UZIMAGE= ${ZIMAGE}.uue
+
+test:
+ @sh runtests.sh
+
+image:
+ makefs -s 1048576 ${IMAGE} etalon
+ printf "#\n# $$" >${UZIMAGE}
+ printf "FreeBSD$$\n#\n\n" >> ${UZIMAGE}
+ mkuzip -o ${ZIMAGE} ${IMAGE}
+ uuencode ${ZIMAGE} ${ZIMAGE} >>${UZIMAGE}
+ rm ${ZIMAGE}
+
+clean:
+ rm -f ${IMAGE} ${ZIMAGE}
diff --git a/tools/regression/geom_uzip/etalon/etalon.txt b/tools/regression/geom_uzip/etalon/etalon.txt
new file mode 100644
index 0000000..cb8acf3
--- /dev/null
+++ b/tools/regression/geom_uzip/etalon/etalon.txt
@@ -0,0 +1,43 @@
+#
+# $FreeBSD$
+#
+
+JABBERWOCKY
+
+Lewis Carroll
+(from Through the Looking-Glass and What Alice Found There, 1872)
+
+`Twas brillig, and the slithy toves
+Did gyre and gimble in the wabe:
+All mimsy were the borogoves,
+And the mome raths outgrabe.
+
+"Beware the Jabberwock, my son!
+The jaws that bite, the claws that catch!
+Beware the Jubjub bird, and shun
+The frumious Bandersnatch!"
+
+He took his vorpal sword in hand:
+Long time the manxome foe he sought --
+So rested he by the Tumtum tree,
+And stood awhile in thought.
+
+And, as in uffish thought he stood,
+The Jabberwock, with eyes of flame,
+Came whiffling through the tulgey wood,
+And burbled as it came!
+
+One, two! One, two! And through and through
+The vorpal blade went snicker-snack!
+He left it dead, and with its head
+He went galumphing back.
+
+"And, has thou slain the Jabberwock?
+Come to my arms, my beamish boy!
+O frabjous day! Callooh! Callay!'
+He chortled in his joy.
+
+`Twas brillig, and the slithy toves
+Did gyre and gimble in the wabe;
+All mimsy were the borogoves,
+And the mome raths outgrabe.
diff --git a/tools/regression/geom_uzip/runtests.sh b/tools/regression/geom_uzip/runtests.sh
new file mode 100644
index 0000000..60e78b5
--- /dev/null
+++ b/tools/regression/geom_uzip/runtests.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+dir=`dirname $0`
+
+for ts in `dirname $0`/test-*.sh; do
+ sh $ts
+done
diff --git a/tools/regression/geom_uzip/test-1.img.uzip.uue b/tools/regression/geom_uzip/test-1.img.uzip.uue
new file mode 100644
index 0000000..ca16f47
--- /dev/null
+++ b/tools/regression/geom_uzip/test-1.img.uzip.uue
@@ -0,0 +1,110 @@
+#
+# $FreeBSD$
+#
+
+begin 755 test-1.img.uzip
+M(R$O8FEN+W-H"B-6,BXP($9O<FUA=`IM/6=E;VU?=7II<`HH:VQD<W1A="`M
+M;2`D;2`R/B8M?'QK;&1L;V%D("1M*3XF+28F;6]U;G1?8V0Y-C8P("]D978O
+M8&UD8V]N9FEG("UA9B`D,&`N=7II<"`D,0IE>&ET("0_"@```````$``````
+M0`````````*0`````````W<````````$F@````````AQ````````")@`````
+M```(OP````````CF````````"0T````````)-`````````E;````````"8(`
+M```````)J0````````G0````````"?<````````*'@````````I%````````
+M"FP````````*DP````````JZ````````"N$````````+"`````````LO````
+M````"U8````````+?0````````ND````````"\L````````+\@````````P9
+M````````#$`````````,9P````````R.````````#+4````````,W```````
+M``T#````````#2H````````-40````````UX````````#9\````````-Q@``
+M``````WM````````#A0````````..P````````YB````````#HD````````.
+ML`````````[7````````#OX````````/)0````````],````````#W,`````
+M```/F@````````_!````````#^@````````0#P```````!`V````````$%T`
+M```````0A````````!"K````````$-(````````0^0```````!$@````````
+M$4<````````1;@```````!&5````````$<%XVNW4/0K",!3`\1>M$`3!42<[
+M>@1!AX)X`^_@X`VZZ.[%''1V]0+>0(@O[0OMZF`5^?_@-6GS2=L\$0``````
+M````````\"_&&A.-7&-NSX)Z7)=KR41N?1$GUD'OO18#Z[>*EWL(\@QAI-6A
+MU.WQHL/J<;ZUF-8++7JM>V?5N-YN<]I7>\@LTGCK%Z.P]CA'J;%(<SDY\C7Q
+M%6?OY>*;/SW_H;W97M*9*ZU<O#E-E0^D.9<Q+T@K9WQ48>>^8]YR7'QWX>"<
+MUTV$F>7(?M,OY:9D.W6<"0```````````'3J!63?'NAXVNW9,4I#01#&\6^3
+M"*L@6&IE2@]@$=#B@7@#!6^@X`W2F-Z+6(BEM:6%UK9>P!L(ZTS>K"^"B"&8
+M6/Q_,&]W\W8W0\A.LU)KRV+;8FBQ%Y\5\_9\<*2!]-*7DF*"C;,U:S'OT!^O
+MI>B]E$WK;JA][P];UJ[+ZEB_L:8W,T[1]>\[/[Z^G.8PB*CK8YY'$^]]C['%
+MJ.Z5-!&P"H\YZREW__3A/\HM<JEG;ASM:,YMIO5`W;GTNJ"9FO&GFCCW2Y:C
+MQOEO5ZY2RI9$V8T:V>_FU=I4G>PDS@0```````````"6[K2W_GFOE_R&[;M[
+M=?W^CN_&XM;BSN+>XB))^Q9G%I.%,BU?1ROS<Y9^Z_<PUPH`````````````
+M`!;S`6\CL0=XVNV:SVXC-1S'TS^PE<6!`T>0?MFN%A8EF:;+BI(]H"1M04NE
+M2FW%BA-X,IX9MYYQ9'LZS=[V`1`OP0-PV$=`W+ARX@&X\`A(_.Q)2:A8@50J
+M0??WD:9V//[Y:W]_GLETVE;KU>:WX5I366V*7W]\//;E#]^\/5PN'UQ39SY\
+MZY>UYECHK_ZE_HNY[F79N2'];Y^OA+)<;S[_--?_[HK^^]?47W^)_HNY_CNM
+M/^L??MWH7I;=&UK_I?[]O]'OW;!^]XK^U?Q'-Z1/$`1!$`1!$`1!$`1!$`1!
+M$`1!$,3MP?]=\!D>.V0%0;R2U_\;K?65WJ*^VL,/:TU];?SY<?C?C9]7-IAP
+M7.FRYRX<^480MX%-M@GW]HT0H^/=`5@SB9S6RD9&9$98*W4994(77U;/Y#1J
+M;@#1XC[0.8=^KP_;6UL?1%L[4?\A;'TT>/1P\&@;TE,M8.]B"O?8)F-/AJ/1
+MWM'3P_%G7S!V(&II8<R-T4JQ]U*C"SC)C:ZR'%PNX$#K,UEFW4\4MQ9XF<#3
+MG#L8*CD1L*\K;#C)A1$=Z.]\N/V`L:].:FXA-E(IF75"A!_'*NGR&3A]+BS;
+ME0ED,R/"V4P6L1(@R]"OYK$8L*%24,C"SJ#&L<.)6!N=^>@.&\['+'0AP'"7
+M6]"5RPR&]AB[.Q(UGP<]X7$L3*TG9QTH9F!UV68X73CEM<4.N)!8.IR[[SM1
+M?S1.N)OD;;8\4!6?5C'V-DFS)IM791@J-54A=65AA,W"V#+$WF7L4XQ$\R!'
+M?\^UF7(%MM8F\2O-L>^`'>@R`R>+1J+@Y85?4(JY\H;Y%#CH=MFQ!DR_$XEO
+MCF>A\TE5N*H`AYNE\<.B5@*\SN6EER$>_<"S.&7K&ZLTE3:_/!=4?%@G+&39
+MJQJ3!6(FT-@44L4+5!GC3\#QTU1)/^^E3>(JE0G,51C+SR:N#.8T";+>SD*T
+M&3LLO=.U;L.BUJ2R&8DOZF%"<]-BQ1,4%J4#6\K)F3!=-'ERUO8.*Y$Z+Y$(
+M/D],F+IT%E?'$]\E1&9<5<4T]Q./,=9OD^!+SFVP`_<GG^_`A0\?L[%/B--^
+M[W!3V+")8L$+[V*L9VUVB/GG\:G/?\)G;;R0E-(Z;RK8\*Z?P237QGD[?.9Q
+M-YSJ6>]?N5`>7^="H?LM0?R76'O)\_]K6'^SM;%^I'5XVG\=C[=:&^Q(3+65
+M3IM9JW4'V[Y?V;BS5SHCA24S">)_QD!<N$$Y.;?=%)_K8IL,HAR_N2/?1%_7
+M!'&[^4>_\=.-@"!N)4LO\Z)^KQ_M&PG#*H/E5WGA]5[$=NDV0!"WB]\!34_J
+M#GC:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q
+M`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@
+M]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@
+M````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````
+M````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````
+M````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!
+M0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:
+M[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0``
+M`,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M
+M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````
+M````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````
+M````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````
+M@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0```
+M`7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q
+M`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@
+M]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@
+M````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````
+M````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````
+M````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!
+M0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:
+M[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0``
+M`,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M
+M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````
+M````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````
+M````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````
+M@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0```
+M`7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q
+M`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@
+M]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@
+M````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````
+M````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````
+M````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!
+M0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:
+M[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0``
+M`,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M
+M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````
+M````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````
+M````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````
+M@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0```
+M`7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q
+M`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@
+M]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@
+M````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````
+M````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````
+M````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!
+M0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:
+M[<$Q`0```,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0``
+M`,*@]4]M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M
+M#!^@````````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````
+M````````````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````
+M````````@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````
+M@+<!0````7C:[<$Q`0```,*@]4]M#!^@````````````````````@+<!0```
+M`7C:[=`Q`0``#`(@HQO="GOV0002````````````````````>%$%=P/6@`"!
+M````````````````````````````````````````````````````````````
+2````````````````````````
+`
+end
diff --git a/tools/regression/geom_uzip/test-1.sh b/tools/regression/geom_uzip/test-1.sh
new file mode 100644
index 0000000..7e8f168
--- /dev/null
+++ b/tools/regression/geom_uzip/test-1.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+mntpoint="/mnt/test-1"
+
+#
+# prepare
+kldload geom_uzip
+uudecode test-1.img.uzip.uue
+num=`mdconfig -an -f test-1.img.uzip` || exit 1
+sleep 1
+
+#
+# mount
+mkdir -p "${mntpoint}"
+mount -o ro /dev/md${num}.uzip "${mntpoint}" || exit 1
+
+#
+# compare
+#cat "${mntpoint}/etalon.txt"
+diff -u etalon/etalon.txt "${mntpoint}/etalon.txt"
+if [ $? -eq 0 ]; then
+ echo "PASS"
+else
+ echo "FAIL"
+fi
+
+#
+# cleanup
+umount "${mntpoint}"
+rmdir "${mntpoint}"
+mdconfig -d -u ${num}
+sleep 1
+kldunload geom_uzip
diff --git a/tools/regression/geom_uzip/test-2.sh b/tools/regression/geom_uzip/test-2.sh
new file mode 100644
index 0000000..8662827
--- /dev/null
+++ b/tools/regression/geom_uzip/test-2.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+#
+# prepare
+kldload geom_uzip
+uudecode test-1.img.uzip.uue
+num=`mdconfig -an -f test-1.img.uzip` || exit 1
+sleep 1
+
+#
+# destroy
+kldunload geom_uzip
diff --git a/tools/regression/ia64/emulated/brl.t b/tools/regression/ia64/emulated/brl.t
new file mode 100644
index 0000000..c47989c
--- /dev/null
+++ b/tools/regression/ia64/emulated/brl.t
@@ -0,0 +1,99 @@
+#!/usr/bin/env perl -w
+#
+# Copyright (c) 2006 Marcel Moolenaar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+
+my $srcdir = `dirname $0`;
+chomp $srcdir;
+
+my @types = ("Call", "Cond");
+my @preds = ("False", "True");
+my %variant_mapping = (
+ "Call" => "",
+ "Cond" => "Backward Forward"
+);
+
+sub run ($$$$) {
+ local ($nr, $type, $pred, $var) = @_;
+ local $test = "${type}_${pred}_${var}";
+ local $tmpfile = "/tmp/" . $$ . "_$test";
+ local $st;
+
+ $st = system("cc -o $tmpfile -DTYPE=$type -DPRED=$pred -DVAR=$var -Wall -O1 -g $srcdir/test.c");
+ if ($st != 0) {
+ print "not ok $nr $test # compiling $test\n";
+ }
+ else {
+ $st = system($tmpfile);
+ if ($st == 0) {
+ print "ok $nr $test\n";
+ }
+ elsif ($st == 256) {
+ print "not ok $nr $test # invalid combination\n";
+ }
+ elsif ($st == 512) {
+ print "not ok $nr $test # long branch failure\n";
+ }
+ else {
+ print "not ok $nr $test # signalled (exit status $st)\n";
+ return; # Preserve the executable
+ }
+ }
+ unlink $tmpfile;
+}
+
+#
+# We can only test the long brach emulation on the Merced processor.
+# Check for that and skip these tests if it's not...
+#
+$_ = `sysctl -n hw.model`;
+if (! /^Merced$/) {
+ print "1..0 # SKIP This test can only be run on the Merced\n";
+ exit 0;
+}
+
+#
+# Get the total number of tests we're going to perform.
+#
+my $count = 0;
+foreach $type (@types) {
+ my @variants = split(/ /, $variant_mapping{$type});
+ $count += @preds * @variants;
+}
+
+print "1..$count\n";
+
+my $nr=0;
+foreach $type (@types) {
+ my @variants = split(/ /, $variant_mapping{$type});
+ foreach $pred (@preds) {
+ foreach $var (@variants) {
+ run ++$nr, $type, $pred, $var;
+ }
+ }
+}
+
+exit 0;
diff --git a/tools/regression/ia64/emulated/test.c b/tools/regression/ia64/emulated/test.c
new file mode 100644
index 0000000..35d4b05
--- /dev/null
+++ b/tools/regression/ia64/emulated/test.c
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2006 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/mman.h>
+#include <stdio.h>
+#include <string.h>
+
+/* Supported long branch types */
+#define Call 1
+#define Cond 2
+
+/* Supported predicates */
+#define False 1
+#define True 2
+
+/* Supported variations */
+#define Backward 1
+#define Forward 2
+
+#if TYPE == 0 || PRED == 0 || VAR == 0
+#error Define TYPE, PRED and/or VAR
+#endif
+
+union bundle {
+ unsigned char bytes[16];
+ long double _align;
+};
+
+/*
+ * Machine code of a bundle containing a long branch. The predicate of the
+ * long branch is the result of the compare in the first slot.
+ * The assembly of the bundle is:
+ * { .mlx
+ * cmp.eq p0,p15= <PREDICATE>,r0
+ * (p15) brl.few <TARGET> ;;
+ * }
+ * the predicate is written to bit 18:1
+ * The branch target is written to bits 100:20, 48:39 and 123:1
+ */
+unsigned char mc_brl_cond[16] = {
+ 0x05, 0x00, 0x00, 0x00, 0x0f, 0x39,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x07,
+ 0x00, 0x00, 0x00, 0xc0
+};
+
+/*
+ * Machine code of the epilogue of a typical function returning an integer.
+ * The assembly of the epilogue is:
+ * { .mib
+ * nop.m 0
+ * addl r8 = <RETVAL>, r0
+ * br.ret.sptk.few b0 ;;
+ * }
+ * The return value is written to bits 59:7, 73:9, 68:5, and 82:1.
+ */
+unsigned char mc_epilogue[16] = {
+ 0x11, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x48, 0x80,
+ 0x00, 0x00, 0x84, 0x00
+};
+
+void
+mc_patch(union bundle *b, unsigned long val, int start, int len)
+{
+ unsigned long mask;
+ int bit, byte, run;
+
+ byte = start >> 3;
+ bit = start & 7;
+ while (len) {
+ run = ((len > (8 - bit)) ? (8 - bit) : len);
+ mask = (1UL << run) - 1UL;
+ b->bytes[byte] |= (val & mask) << bit;
+ val >>= run;
+ len -= run;
+ byte++;
+ bit = 0;
+ }
+}
+
+void
+assemble_brl_cond(union bundle *b, int pred, unsigned long tgt)
+{
+ unsigned long iprel;
+
+ iprel = tgt - (unsigned long)b;
+ memcpy(b->bytes, mc_brl_cond, sizeof(mc_brl_cond));
+ mc_patch(b, pred ? 1 : 0, 18, 1);
+ mc_patch(b, iprel >> 4, 100, 20);
+ mc_patch(b, iprel >> 24, 48, 39);
+ mc_patch(b, iprel >> 63, 123, 1);
+}
+
+void
+assemble_epilogue(union bundle *b, int retval)
+{
+ memcpy(b->bytes, mc_epilogue, sizeof(mc_epilogue));
+ mc_patch(b, retval, 59, 7);
+ mc_patch(b, retval >> 7, 73, 9);
+ mc_patch(b, retval >> 16, 68, 5);
+ mc_patch(b, retval >> 21, 82, 1);
+}
+
+int
+doit(void *addr)
+{
+ asm("mov b6 = %0; br.sptk b6;;" :: "r"(addr));
+ return 1;
+}
+
+int
+test_cond(int pred, union bundle *src, union bundle *dst)
+{
+ assemble_epilogue(dst, pred ? 0 : 2);
+ assemble_brl_cond(src, pred ? 1 : 0, (unsigned long)dst);
+ assemble_epilogue(src + 1, !pred ? 0 : 2);
+ return doit(src);
+}
+
+int
+main()
+{
+ static union bundle blob_low[2];
+ union bundle *blob_high;
+ void *addr;
+
+ addr = (void *)0x7FFFFFFF00000000L;
+ blob_high = mmap(addr, 32, PROT_EXEC | PROT_READ | PROT_WRITE,
+ MAP_ANON, -1, 0L);
+ if (blob_high != addr)
+ printf("NOTICE: blob_high is at %p, not at %p\n", blob_high,
+ addr);
+
+#if TYPE == Call
+ return (test_call(blob_high, blob_low));
+#elif TYPE == Cond
+ #if VAR == Forward
+ return (test_cond(PRED - 1, blob_low, blob_high));
+ #elif VAR == Backward
+ return (test_cond(PRED - 1, blob_high, blob_low));
+ #else
+ return (1);
+ #endif
+#else
+ return (1);
+#endif
+}
diff --git a/tools/regression/ia64/unaligned/test.c b/tools/regression/ia64/unaligned/test.c
new file mode 100644
index 0000000..869c864
--- /dev/null
+++ b/tools/regression/ia64/unaligned/test.c
@@ -0,0 +1,204 @@
+/*
+ * Copyright (c) 2005 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <machine/float.h>
+#include <string.h>
+
+/* Memory accesses. */
+#define Load 0x01
+#define Store 0x02
+
+/* Data type. */
+#define Integer 0x11
+#define FloatingPoint 0x12
+
+/* Data size. */
+#define Small 0x21
+#define Medium 0x22
+#define Large 0x23
+
+/* Post increment. */
+#define NoPostInc 0x31
+#define MinConstPostInc 0x32
+#define PlusConstPostInc 0x33
+#define ScratchRegPostInc 0x34
+#define PreservedRegPostInc 0x35
+
+#if ACCESS == 0 || TYPE == 0 || SIZE == 0 || POSTINC == 0
+#error define ACCESS, TYPE, SIZE and/or POSTINC
+#endif
+
+#if TYPE == Integer
+# define REG "r8"
+# if SIZE == Small
+# define DATA_TYPE short
+# define DATA_VALUE 0x1234
+# define LD "ld2"
+# define ST "st2"
+# elif SIZE == Medium
+# define DATA_TYPE int
+# define DATA_VALUE 0x12345678
+# define LD "ld4"
+# define ST "st4"
+# elif SIZE == Large
+# define DATA_TYPE long
+# define DATA_VALUE 0x1234567890ABCDEF
+# define LD "ld8"
+# define ST "st8"
+# endif
+#elif TYPE == FloatingPoint
+# define REG "f6"
+# if SIZE == Small
+# define DATA_TYPE float
+# define DATA_VALUE FLT_MIN
+# define LD "ldfs"
+# define ST "stfs"
+# elif SIZE == Medium
+# define DATA_TYPE double
+# define DATA_VALUE DBL_MIN
+# define LD "ldfd"
+# define ST "stfd"
+# elif SIZE == Large
+# define DATA_TYPE long double
+# define DATA_VALUE LDBL_MIN
+# define LD "ldfe"
+# define ST "stfe"
+# endif
+#endif
+
+struct {
+ DATA_TYPE aligned;
+ char _;
+ char misaligned[sizeof(DATA_TYPE)];
+} data;
+
+DATA_TYPE *aligned = &data.aligned;
+DATA_TYPE *misaligned = (DATA_TYPE *)data.misaligned;
+DATA_TYPE value = DATA_VALUE;
+
+void
+block_copy(void *dst, void *src, size_t sz)
+{
+
+ memcpy(dst, src, sz);
+}
+
+int
+main()
+{
+
+ /* Set PSR.ac. */
+ asm volatile("sum 8");
+
+#if ACCESS == Load
+ /*
+ * LOAD
+ */
+ block_copy(misaligned, &value, sizeof(DATA_TYPE));
+
+# if POSTINC == NoPostInc
+ /* Misaligned load. */
+ *aligned = *misaligned;
+# elif POSTINC == MinConstPostInc
+ asm volatile(
+ "ld8 r2=%0;;"
+ LD " " REG "=[r2],%2;;"
+ "st8 %0=r2;" ST " %1=" REG ";;"
+ : "=m"(misaligned), "=m"(*aligned)
+ : "i"(-sizeof(DATA_TYPE))
+ : REG, "r2", "memory");
+# elif POSTINC == PlusConstPostInc
+ asm volatile(
+ "ld8 r2=%0;;"
+ LD " " REG "=[r2],%2;;"
+ "st8 %0=r2;" ST " %1=" REG ";;"
+ : "=m"(misaligned), "=m"(*aligned)
+ : "i"(sizeof(DATA_TYPE))
+ : REG, "r2", "memory");
+# elif POSTINC == ScratchRegPostInc
+ asm volatile(
+ "ld8 r2=%0; mov r3=%2;;"
+ LD " " REG "=[r2],r3;;"
+ "st8 %0=r2;" ST " %1=" REG ";;"
+ : "=m"(misaligned), "=m"(*aligned)
+ : "i"(sizeof(DATA_TYPE))
+ : REG, "r2", "r3", "memory");
+# elif POSTINC == PreservedRegPostInc
+ asm volatile(
+ "ld8 r2=%0; mov r4=%2;;"
+ LD " " REG "=[r2],r4;;"
+ "st8 %0=r2;" ST " %1=" REG ";;"
+ : "=m"(misaligned), "=m"(*aligned)
+ : "i"(sizeof(DATA_TYPE))
+ : REG, "r2", "r4", "memory");
+# endif
+
+#elif ACCESS == Store
+ /*
+ * STORE
+ */
+
+# if POSTINC == NoPostInc
+ /* Misaligned store. */
+ *misaligned = value;
+# elif POSTINC == MinConstPostInc
+ asm volatile(
+ "ld8 r2=%0;" LD " " REG "=%1;;"
+ ST " [r2]=" REG ",%2;;"
+ "st8 %0=r2;;"
+ : "=m"(misaligned)
+ : "m"(value), "i"(-sizeof(DATA_TYPE))
+ : REG, "r2", "memory");
+# elif POSTINC == PlusConstPostInc
+ asm volatile(
+ "ld8 r2=%0;" LD " " REG "=%1;;"
+ ST " [r2]=" REG ",%2;;"
+ "st8 %0=r2;;"
+ : "=m"(misaligned)
+ : "m"(value), "i"(sizeof(DATA_TYPE))
+ : REG, "r2", "memory");
+# elif POSTINC == ScratchRegPostInc || POSTINC == PreservedRegPostInc
+ return (1);
+# endif
+
+ block_copy(aligned, data.misaligned, sizeof(DATA_TYPE));
+#endif
+
+ if (*aligned != value)
+ return (2);
+
+#if POSTINC == NoPostInc
+ return (0);
+#elif POSTINC == MinConstPostInc
+ return (((char *)misaligned == data.misaligned - sizeof(DATA_TYPE))
+ ? 0 : 4);
+#else
+ return (((char *)misaligned == data.misaligned + sizeof(DATA_TYPE))
+ ? 0 : 4);
+#endif
+}
diff --git a/tools/regression/ia64/unaligned/unaligned.t b/tools/regression/ia64/unaligned/unaligned.t
new file mode 100644
index 0000000..5d061bd
--- /dev/null
+++ b/tools/regression/ia64/unaligned/unaligned.t
@@ -0,0 +1,99 @@
+#!/usr/bin/env perl -w
+#
+# Copyright (c) 2005 Marcel Moolenaar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+
+my $srcdir = `dirname $0`;
+chomp $srcdir;
+
+my @accesses = ("Load", "Store");
+my @types = ("Integer", "FloatingPoint");
+my @sizes = ("Small", "Medium", "Large");
+my @postincs = ("NoPostInc", "MinConstPostInc", "PlusConstPostInc",
+ "ScratchRegPostInc", "PreservedRegPostInc");
+
+sub run ($$$$$) {
+ local ($nr, $access, $type, $size, $postinc) = @_;
+ local $test = "${access}_${type}_${size}_${postinc}";
+ local $tmpfile = "/tmp/" . $$ . "_$test";
+ local $st;
+
+ $st = system("cc -o $tmpfile -DACCESS=$access -DTYPE=$type -DSIZE=$size -DPOSTINC=$postinc -Wall -O -g $srcdir/test.c");
+ if ($st != 0) {
+ print "not ok $nr $test # compiling $test\n";
+ }
+ else {
+ $st = system($tmpfile);
+ if ($st == 0) {
+ print "ok $nr $test\n";
+ }
+ elsif ($st == 256) {
+ print "not ok $nr $test # invalid combination\n";
+ }
+ elsif ($st == 512) {
+ print "not ok $nr $test # value mismatch\n";
+ }
+ elsif ($st == 1024) {
+ print "not ok $nr $test # post increment mismatch\n";
+ }
+ else {
+ print "not ok $nr $test # signalled (exit status $st)\n";
+ return; # Preserve the executable
+ }
+ }
+ unlink $tmpfile;
+}
+
+system("sysctl debug.unaligned_test=1");
+if (`sysctl -n debug.unaligned_test` != "1") {
+ print "1..0 # SKIP The debug.unaligned_test sysctl could not be set\n";
+ exit 0;
+}
+
+my $count = @accesses * @types * @sizes * @postincs;
+
+# There's no register based post inc. for stores.
+$count -= 12;
+
+print "1..$count\n";
+
+my $nr=0;
+foreach $access (@accesses) {
+ foreach $postinc (@postincs) {
+ $_ = "$access $postinc";
+ if (! /Store.+RegPostInc/) {
+ foreach $type (@types) {
+ foreach $size (@sizes) {
+ run ++$nr, $access, $type, $size, $postinc;
+ }
+ }
+ }
+ }
+}
+
+system("sysctl debug.unaligned_test=0");
+
+exit 0;
diff --git a/tools/regression/include/tgmath/Makefile b/tools/regression/include/tgmath/Makefile
new file mode 100644
index 0000000..64626c5
--- /dev/null
+++ b/tools/regression/include/tgmath/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= tgmath
+CFLAGS+= -fno-builtin -std=c99
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/include/tgmath/tgmath.c b/tools/regression/include/tgmath/tgmath.c
new file mode 100644
index 0000000..037810a
--- /dev/null
+++ b/tools/regression/include/tgmath/tgmath.c
@@ -0,0 +1,621 @@
+/*-
+ * Copyright (c) 2004 Stefan Farfeleder <stefanf@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/cdefs.h>
+/* All of our functions have side effects, __pure2 causes functions calls to
+ * be optimised away. Stop that. */
+#undef __pure2
+#define __pure2
+
+#include <assert.h>
+#include <stdio.h>
+#include <tgmath.h>
+
+int n_float, n_double, n_long_double;
+int n_float_complex, n_double_complex, n_long_double_complex;
+
+int currtest = 0;
+
+#define TGMACRO(FNC) \
+ TGMACRO_REAL(FNC) \
+ TGMACRO_COMPLEX(c ## FNC)
+
+#define TGMACRO_REAL(FNC) \
+ float (FNC ## f)(float x) { n_float++; } \
+ double (FNC)(double x) { n_double++; } \
+ long double (FNC ## l)(long double x) { n_long_double++; }
+
+#define TGMACRO_REAL_REAL(FNC) \
+ float (FNC ## f)(float x, float y) { n_float++; } \
+ double (FNC)(double x, double y) { n_double++; } \
+ long double \
+ (FNC ## l)(long double x, long double y) { n_long_double++; }
+
+#define TGMACRO_REAL_FIXED_RET(FNC, TYPE) \
+ TYPE (FNC ## f)(float x) { n_float++; } \
+ TYPE (FNC)(double x) { n_double++; } \
+ TYPE (FNC ## l)(long double x) { n_long_double++; }
+
+#define TGMACRO_COMPLEX(FNC) \
+ float complex (FNC ## f)(float complex x) { n_float_complex++; }\
+ double complex (FNC)(double complex x) { n_double_complex++; } \
+ long double complex \
+ (FNC ## l)(long double complex x) { n_long_double_complex++; }
+
+#define TGMACRO_COMPLEX_REAL_RET(FNC) \
+ float (FNC ## f)(float complex x) { n_float_complex++; } \
+ double (FNC)(double complex x) { n_double_complex++; } \
+ long double \
+ (FNC ## l)(long double complex x) { n_long_double_complex++; }
+
+
+/* 7.22#4 */
+TGMACRO(acos)
+TGMACRO(asin)
+TGMACRO(atan)
+TGMACRO(acosh)
+TGMACRO(asinh)
+TGMACRO(atanh)
+TGMACRO(cos)
+TGMACRO(sin)
+TGMACRO(tan)
+TGMACRO(cosh)
+TGMACRO(sinh)
+TGMACRO(tanh)
+TGMACRO(exp)
+TGMACRO(log)
+TGMACRO_REAL_REAL(pow)
+float complex (cpowf)(float complex x, float complex y) { n_float_complex++; }
+double complex
+(cpow)(double complex x, double complex y) { n_double_complex++; }
+long double complex
+(cpowl)(long double complex x, long double complex y)
+{ n_long_double_complex++; }
+TGMACRO(sqrt)
+TGMACRO_REAL(fabs)
+TGMACRO_COMPLEX_REAL_RET(cabs)
+
+/* 7.22#5 */
+TGMACRO_REAL_REAL(atan2)
+TGMACRO_REAL(cbrt)
+TGMACRO_REAL(ceil)
+TGMACRO_REAL_REAL(copysign)
+TGMACRO_REAL(erf)
+TGMACRO_REAL(erfc)
+TGMACRO_REAL(exp2)
+TGMACRO_REAL(expm1)
+TGMACRO_REAL_REAL(fdim)
+TGMACRO_REAL(floor)
+float (fmaf)(float x, float y, float z) { n_float++; }
+double (fma)(double x, double y, double z) { n_double++; }
+long double
+(fmal)(long double x, long double y, long double z) { n_long_double++; }
+TGMACRO_REAL_REAL(fmax)
+TGMACRO_REAL_REAL(fmin)
+TGMACRO_REAL_REAL(fmod)
+float (frexpf)(float x, int *e) { n_float++; }
+double (frexp)(double x, int *e) { n_double++; }
+long double (frexpl)(long double x, int *e) { n_long_double++; }
+TGMACRO_REAL_REAL(hypot)
+TGMACRO_REAL_FIXED_RET(ilogb, int)
+float (ldexpf)(float x, int e) { n_float++; }
+double (ldexp)(double x, int e) { n_double++; }
+long double (ldexpl)(long double x, int e) { n_long_double++; }
+TGMACRO_REAL(lgamma)
+TGMACRO_REAL_FIXED_RET(llrint, long long)
+TGMACRO_REAL_FIXED_RET(llround, long long)
+TGMACRO_REAL(log10)
+TGMACRO_REAL(log1p)
+TGMACRO_REAL(log2)
+TGMACRO_REAL(logb)
+TGMACRO_REAL_FIXED_RET(lrint, long)
+TGMACRO_REAL_FIXED_RET(lround, long)
+TGMACRO_REAL(nearbyint)
+TGMACRO_REAL_REAL(nextafter)
+float (nexttowardf)(float x, long double y) { n_float++; }
+double (nexttoward)(double x, long double y) { n_double++; }
+long double (nexttowardl)(long double x, long double y) { n_long_double++; }
+TGMACRO_REAL_REAL(remainder)
+float (remquof)(float x, float y, int *q) { n_float++; }
+double (remquo)(double x, double y, int *q) { n_double++; }
+long double (remquol)(long double x, long double y, int *q) { n_long_double++; }
+TGMACRO_REAL(rint)
+TGMACRO_REAL(round)
+float (scalbnf)(float x, int n) { n_float++; }
+double (scalbn)(double x, int n) { n_double++; }
+long double (scalbnl)(long double x, int n) { n_long_double++; }
+float (scalblnf)(float x, long n) { n_float++; }
+double (scalbln)(double x, long n) { n_double++; }
+long double (scalblnl)(long double x, long n) { n_long_double++; }
+TGMACRO_REAL(tgamma)
+TGMACRO_REAL(trunc)
+
+/* 7.22#6 */
+TGMACRO_COMPLEX_REAL_RET(carg)
+TGMACRO_COMPLEX_REAL_RET(cimag)
+TGMACRO_COMPLEX(conj)
+TGMACRO_COMPLEX(cproj)
+TGMACRO_COMPLEX_REAL_RET(creal)
+
+
+long double ld;
+double d;
+float f;
+long double complex ldc;
+double complex dc;
+float complex fc;
+unsigned long long ull;
+int i;
+_Bool b;
+
+#define SAMETYPE(EXP, TYPE) \
+ __builtin_types_compatible_p(__typeof__(EXP), TYPE)
+
+#define CLEAR_COUNTERS \
+ (n_float = n_double = n_long_double = 0, \
+ n_float_complex = n_double_complex = n_long_double_complex = 0, 1)
+
+#define RUN_TEST(EXP, TYPE) (EXP, SAMETYPE(EXP, TYPE))
+
+#define PASS_REAL_ARG_REAL_RET(FNC) PASS_REAL_ARG_REAL_RET_(FNC,)
+
+#define PASS_REAL_ARG_REAL_RET_(FNC, SUFFIX) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(1.l), long double) && \
+ RUN_TEST(FNC(ld), long double) && \
+ n_long_double ## SUFFIX == 2 && \
+ RUN_TEST(FNC(1.), double) && \
+ RUN_TEST(FNC(d), double) && \
+ RUN_TEST(FNC(1ull), double) && \
+ RUN_TEST(FNC(ull), double) && \
+ RUN_TEST(FNC(1), double) && \
+ RUN_TEST(FNC(i), double) && \
+ RUN_TEST(FNC((_Bool)0), double) && \
+ RUN_TEST(FNC(b), double) && \
+ n_double ## SUFFIX == 8 && \
+ RUN_TEST(FNC(1.f), float) && \
+ RUN_TEST(FNC(f), float) && \
+ n_float ## SUFFIX == 2
+
+#define PASS_REAL_ARG_FIXED_RET(FNC, RET) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(1.l), RET) && \
+ RUN_TEST(FNC(ld), RET) && \
+ n_long_double == 2 && \
+ RUN_TEST(FNC(1.), RET) && \
+ RUN_TEST(FNC(d), RET) && \
+ RUN_TEST(FNC(1ull), RET) && \
+ RUN_TEST(FNC(ull), RET) && \
+ RUN_TEST(FNC(1), RET) && \
+ RUN_TEST(FNC(i), RET) && \
+ RUN_TEST(FNC((_Bool)0), RET) && \
+ RUN_TEST(FNC(b), RET) && \
+ n_double == 8 && \
+ RUN_TEST(FNC(1.f), RET) && \
+ RUN_TEST(FNC(f), RET) && \
+ n_float == 2
+
+#define PASS_REAL_FIXED_ARG_REAL_RET(FNC, ARG2) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(1.l, ARG2), long double) && \
+ RUN_TEST(FNC(ld, ARG2), long double) && \
+ n_long_double == 2 && \
+ RUN_TEST(FNC(1., ARG2), double) && \
+ RUN_TEST(FNC(d, ARG2), double) && \
+ RUN_TEST(FNC(1ull, ARG2), double) && \
+ RUN_TEST(FNC(ull, ARG2), double) && \
+ RUN_TEST(FNC(1, ARG2), double) && \
+ RUN_TEST(FNC(i, ARG2), double) && \
+ RUN_TEST(FNC((_Bool)0, ARG2), double) && \
+ RUN_TEST(FNC(b, ARG2), double) && \
+ n_double == 8 && \
+ RUN_TEST(FNC(1.f, ARG2), float) && \
+ RUN_TEST(FNC(f, ARG2), float) && \
+ n_float == 2
+
+#define PASS_REAL_REAL_ARG_REAL_RET(FNC) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(1.l, 1.l), long double) && \
+ RUN_TEST(FNC(1.l, 1.), long double) && \
+ RUN_TEST(FNC(1.l, 1.f), long double) && \
+ RUN_TEST(FNC(1.l, 1), long double) && \
+ RUN_TEST(FNC(1.l, (_Bool)0), long double) && \
+ RUN_TEST(FNC(1.l, ld), long double) && \
+ RUN_TEST(FNC(1., ld), long double) && \
+ RUN_TEST(FNC(1.f, ld), long double) && \
+ RUN_TEST(FNC(1, ld), long double) && \
+ RUN_TEST(FNC((_Bool)0, ld), long double) && \
+ n_long_double == 10 && \
+ RUN_TEST(FNC(d, 1.), double) && \
+ RUN_TEST(FNC(d, 1.f), double) && \
+ RUN_TEST(FNC(d, 1l), double) && \
+ RUN_TEST(FNC(d, (_Bool)0), double) && \
+ RUN_TEST(FNC(1., 1.), double) && \
+ RUN_TEST(FNC(1.f, 1.), double) && \
+ RUN_TEST(FNC(1l, 1.), double) && \
+ RUN_TEST(FNC((_Bool)0, 1.), double) && \
+ RUN_TEST(FNC(1ull, f), double) && \
+ RUN_TEST(FNC(1.f, ull), double) && \
+ RUN_TEST(FNC(1, 1l), double) && \
+ RUN_TEST(FNC(1u, i), double) && \
+ RUN_TEST(FNC((_Bool)0, 1.f), double) && \
+ RUN_TEST(FNC(1.f, b), double) && \
+ n_double == 14 && \
+ RUN_TEST(FNC(1.f, 1.f), float) && \
+ RUN_TEST(FNC(1.f, 1.f), float) && \
+ RUN_TEST(FNC(f, 1.f), float) && \
+ RUN_TEST(FNC(f, f), float) && \
+ n_float == 4
+
+#define PASS_REAL_REAL_FIXED_ARG_REAL_RET(FNC, ARG3) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(1.l, 1.l, ARG3), long double) && \
+ RUN_TEST(FNC(1.l, 1., ARG3), long double) && \
+ RUN_TEST(FNC(1.l, 1.f, ARG3), long double) && \
+ RUN_TEST(FNC(1.l, 1, ARG3), long double) && \
+ RUN_TEST(FNC(1.l, (_Bool)0, ARG3), long double) && \
+ RUN_TEST(FNC(1.l, ld, ARG3), long double) && \
+ RUN_TEST(FNC(1., ld, ARG3), long double) && \
+ RUN_TEST(FNC(1.f, ld, ARG3), long double) && \
+ RUN_TEST(FNC(1, ld, ARG3), long double) && \
+ RUN_TEST(FNC((_Bool)0, ld, ARG3), long double) && \
+ n_long_double == 10 && \
+ RUN_TEST(FNC(d, 1., ARG3), double) && \
+ RUN_TEST(FNC(d, 1.f, ARG3), double) && \
+ RUN_TEST(FNC(d, 1l, ARG3), double) && \
+ RUN_TEST(FNC(d, (_Bool)0, ARG3), double) && \
+ RUN_TEST(FNC(1., 1., ARG3), double) && \
+ RUN_TEST(FNC(1.f, 1., ARG3), double) && \
+ RUN_TEST(FNC(1l, 1., ARG3), double) && \
+ RUN_TEST(FNC((_Bool)0, 1., ARG3), double) && \
+ RUN_TEST(FNC(1ull, f, ARG3), double) && \
+ RUN_TEST(FNC(1.f, ull, ARG3), double) && \
+ RUN_TEST(FNC(1, 1l, ARG3), double) && \
+ RUN_TEST(FNC(1u, i, ARG3), double) && \
+ RUN_TEST(FNC((_Bool)0, 1.f, ARG3), double) && \
+ RUN_TEST(FNC(1.f, b, ARG3), double) && \
+ n_double == 14 && \
+ RUN_TEST(FNC(1.f, 1.f, ARG3), float) && \
+ RUN_TEST(FNC(1.f, 1.f, ARG3), float) && \
+ RUN_TEST(FNC(f, 1.f, ARG3), float) && \
+ RUN_TEST(FNC(f, f, ARG3), float) && \
+ n_float == 4
+
+#define PASS_REAL_REAL_REAL_ARG_REAL_RET(FNC) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(ld, d, f), long double) && \
+ RUN_TEST(FNC(1, ld, ld), long double) && \
+ RUN_TEST(FNC(1, d, ld), long double) && \
+ n_long_double == 3 && \
+ RUN_TEST(FNC(1, f, 1.f), double) && \
+ RUN_TEST(FNC(f, d, 1.f), double) && \
+ RUN_TEST(FNC(f, 1.f, 1.), double) && \
+ n_double == 3 && \
+ RUN_TEST(FNC(f, 1.f, f), float) && \
+ n_float == 1
+
+#define PASS_REAL_ARG_COMPLEX_RET(FNC) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(1.l), long double complex) && \
+ RUN_TEST(FNC(ld), long double complex) && \
+ n_long_double_complex == 2 && \
+ RUN_TEST(FNC(1.), double complex) && \
+ RUN_TEST(FNC(d), double complex) && \
+ RUN_TEST(FNC(1l), double complex) && \
+ RUN_TEST(FNC(i), double complex) && \
+ RUN_TEST(FNC(b), double complex) && \
+ n_double_complex == 5 && \
+ RUN_TEST(FNC(1.f), float complex) && \
+ RUN_TEST(FNC(f), float complex) && \
+ n_float_complex == 2
+
+#define PASS_COMPLEX_ARG_COMPLEX_RET(FNC) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(ldc), long double complex) && \
+ n_long_double_complex == 1 && \
+ RUN_TEST(FNC(dc), double complex) && \
+ n_double_complex == 1 && \
+ RUN_TEST(FNC(fc), float complex) && \
+ RUN_TEST(FNC(I), float complex) && \
+ n_float_complex == 2
+
+#define PASS_COMPLEX_ARG_REAL_RET(FNC) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(ldc), long double) && \
+ n_long_double_complex == 1 && \
+ RUN_TEST(FNC(dc), double) && \
+ n_double_complex == 1 && \
+ RUN_TEST(FNC(fc), float) && \
+ RUN_TEST(FNC(I), float) && \
+ n_float_complex == 2
+
+#define PASS_COMPLEX_COMPLEX_ARG_COMPLEX_RET(FNC) \
+ CLEAR_COUNTERS && \
+ RUN_TEST(FNC(ldc, ldc), long double complex) && \
+ RUN_TEST(FNC(ldc, dc), long double complex) && \
+ RUN_TEST(FNC(ldc, fc), long double complex) && \
+ RUN_TEST(FNC(ldc, ld), long double complex) && \
+ RUN_TEST(FNC(ldc, d), long double complex) && \
+ RUN_TEST(FNC(ldc, f), long double complex) && \
+ RUN_TEST(FNC(ldc, i), long double complex) && \
+ RUN_TEST(FNC(dc, ldc), long double complex) && \
+ RUN_TEST(FNC(I, ldc), long double complex) && \
+ RUN_TEST(FNC(1.l, ldc), long double complex) && \
+ RUN_TEST(FNC(1., ldc), long double complex) && \
+ RUN_TEST(FNC(1.f, ldc), long double complex) && \
+ RUN_TEST(FNC(1, ldc), long double complex) && \
+ RUN_TEST(FNC(ld, dc), long double complex) && \
+ RUN_TEST(FNC(ld, fc), long double complex) && \
+ RUN_TEST(FNC(I, 1.l), long double complex) && \
+ RUN_TEST(FNC(dc, 1.l), long double complex) && \
+ n_long_double_complex == 17 && \
+ RUN_TEST(FNC(dc, dc), double complex) && \
+ RUN_TEST(FNC(dc, fc), double complex) && \
+ RUN_TEST(FNC(dc, d), double complex) && \
+ RUN_TEST(FNC(dc, f), double complex) && \
+ RUN_TEST(FNC(dc, ull), double complex) && \
+ RUN_TEST(FNC(I, dc), double complex) && \
+ RUN_TEST(FNC(1., dc), double complex) && \
+ RUN_TEST(FNC(1, dc), double complex) && \
+ RUN_TEST(FNC(fc, d), double complex) && \
+ RUN_TEST(FNC(1, I), double complex) && \
+ n_double_complex == 10 && \
+ RUN_TEST(FNC(fc, fc), float complex) && \
+ RUN_TEST(FNC(fc, I), float complex) && \
+ RUN_TEST(FNC(1.f, fc), float complex) && \
+ n_float_complex == 3
+
+int failed = 0;
+#define PRINT(STR, X) do { \
+ currtest++; \
+ int result = (X); \
+ if (!result) \
+ failed = 1; \
+ printf("%s %d - %s\n", result ? "ok" : "not ok", currtest, (STR)); \
+ fflush(stdout); \
+} while (0)
+
+int
+main(void)
+{
+ printf("1..60\n");
+
+ /* 7.22#4 */
+ PRINT("acos",
+ PASS_REAL_ARG_REAL_RET(acos) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(acos));
+
+ PRINT("asin",
+ PASS_REAL_ARG_REAL_RET(asin) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(asin));
+
+ PRINT("atan",
+ PASS_REAL_ARG_REAL_RET(atan) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(atan));
+
+ PRINT("acosh",
+ PASS_REAL_ARG_REAL_RET(acosh) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(acosh));
+
+ PRINT("asinh",
+ PASS_REAL_ARG_REAL_RET(asinh) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(asinh));
+
+ PRINT("atanh",
+ PASS_REAL_ARG_REAL_RET(atanh) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(atanh));
+
+ PRINT("cos",
+ PASS_REAL_ARG_REAL_RET(cos) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(cos));
+
+ PRINT("sin",
+ PASS_REAL_ARG_REAL_RET(sin) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(sin));
+
+ PRINT("tan",
+ PASS_REAL_ARG_REAL_RET(tan) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(tan));
+
+ PRINT("cosh",
+ PASS_REAL_ARG_REAL_RET(cosh) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(cosh));
+
+ PRINT("sinh",
+ PASS_REAL_ARG_REAL_RET(sinh) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(sinh));
+
+ PRINT("tanh",
+ PASS_REAL_ARG_REAL_RET(tanh) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(tanh));
+
+ PRINT("exp",
+ PASS_REAL_ARG_REAL_RET(exp) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(exp));
+
+ PRINT("log",
+ PASS_REAL_ARG_REAL_RET(log) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(log));
+
+ PRINT("pow",
+ PASS_REAL_REAL_ARG_REAL_RET(pow) &&
+ PASS_COMPLEX_COMPLEX_ARG_COMPLEX_RET(pow));
+
+ PRINT("sqrt",
+ PASS_REAL_ARG_REAL_RET(sqrt) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(sqrt));
+
+ PRINT("fabs",
+ PASS_REAL_ARG_REAL_RET(fabs) &&
+ PASS_COMPLEX_ARG_REAL_RET(fabs));
+
+ /* 7.22#5 */
+ PRINT("atan2",
+ PASS_REAL_REAL_ARG_REAL_RET(atan2));
+
+ PRINT("cbrt",
+ PASS_REAL_ARG_REAL_RET(cbrt));
+
+ PRINT("ceil",
+ PASS_REAL_ARG_REAL_RET(ceil));
+
+ PRINT("copysign",
+ PASS_REAL_REAL_ARG_REAL_RET(copysign));
+
+ PRINT("erf",
+ PASS_REAL_ARG_REAL_RET(erf));
+
+ PRINT("erfc",
+ PASS_REAL_ARG_REAL_RET(erfc));
+
+ PRINT("exp2",
+ PASS_REAL_ARG_REAL_RET(exp2));
+
+ PRINT("expm1",
+ PASS_REAL_ARG_REAL_RET(expm1));
+
+ PRINT("fdim",
+ PASS_REAL_REAL_ARG_REAL_RET(fdim));
+
+ PRINT("floor",
+ PASS_REAL_ARG_REAL_RET(floor));
+
+ PRINT("fma",
+ PASS_REAL_REAL_REAL_ARG_REAL_RET(fma));
+
+ PRINT("fmax",
+ PASS_REAL_REAL_ARG_REAL_RET(fmax));
+
+ PRINT("fmin",
+ PASS_REAL_REAL_ARG_REAL_RET(fmin));
+
+ PRINT("fmod",
+ PASS_REAL_REAL_ARG_REAL_RET(fmod));
+
+ PRINT("frexp",
+ PASS_REAL_FIXED_ARG_REAL_RET(frexp, &i));
+
+ PRINT("hypot",
+ PASS_REAL_REAL_ARG_REAL_RET(hypot));
+
+ PRINT("ilogb",
+ PASS_REAL_ARG_FIXED_RET(ilogb, int));
+
+ PRINT("ldexp",
+ PASS_REAL_FIXED_ARG_REAL_RET(ldexp, 1) &&
+ PASS_REAL_FIXED_ARG_REAL_RET(ldexp, ld) &&
+ PASS_REAL_FIXED_ARG_REAL_RET(ldexp, ldc));
+
+ PRINT("lgamma",
+ PASS_REAL_ARG_REAL_RET(lgamma));
+
+ PRINT("llrint",
+ PASS_REAL_ARG_FIXED_RET(llrint, long long));
+
+ PRINT("llround",
+ PASS_REAL_ARG_FIXED_RET(llround, long long));
+
+ PRINT("log10",
+ PASS_REAL_ARG_REAL_RET(log10));
+
+ PRINT("log1p",
+ PASS_REAL_ARG_REAL_RET(log1p));
+
+ PRINT("log2",
+ PASS_REAL_ARG_REAL_RET(log2));
+
+ PRINT("logb",
+ PASS_REAL_ARG_REAL_RET(logb));
+
+ PRINT("lrint",
+ PASS_REAL_ARG_FIXED_RET(lrint, long));
+
+ PRINT("lround",
+ PASS_REAL_ARG_FIXED_RET(lround, long));
+
+ PRINT("nearbyint",
+ PASS_REAL_ARG_REAL_RET(nearbyint));
+
+ PRINT("nextafter",
+ PASS_REAL_REAL_ARG_REAL_RET(nextafter));
+
+ PRINT("nexttoward",
+ PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, 1) &&
+ PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, ull) &&
+ PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, d) &&
+ PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, fc));
+
+ PRINT("remainder",
+ PASS_REAL_REAL_ARG_REAL_RET(remainder));
+
+ PRINT("remquo",
+ PASS_REAL_REAL_FIXED_ARG_REAL_RET(remquo, &i));
+
+ PRINT("rint",
+ PASS_REAL_ARG_REAL_RET(rint));
+
+ PRINT("round",
+ PASS_REAL_ARG_REAL_RET(round));
+
+ PRINT("scalbn",
+ PASS_REAL_FIXED_ARG_REAL_RET(scalbn, 1) &&
+ PASS_REAL_FIXED_ARG_REAL_RET(scalbn, b) &&
+ PASS_REAL_FIXED_ARG_REAL_RET(scalbn, I));
+
+ PRINT("scalbln",
+ PASS_REAL_FIXED_ARG_REAL_RET(scalbln, i) &&
+ PASS_REAL_FIXED_ARG_REAL_RET(scalbln, 1.l) &&
+ PASS_REAL_FIXED_ARG_REAL_RET(scalbln, dc));
+
+ PRINT("tgamma",
+ PASS_REAL_ARG_REAL_RET(tgamma));
+
+ PRINT("trunc",
+ PASS_REAL_ARG_REAL_RET(trunc));
+
+ /* 7.22#6 */
+ PRINT("carg",
+ PASS_REAL_ARG_REAL_RET_(carg, _complex) &&
+ PASS_COMPLEX_ARG_REAL_RET(carg));
+
+ PRINT("cimag",
+ PASS_REAL_ARG_REAL_RET_(cimag, _complex) &&
+ PASS_COMPLEX_ARG_REAL_RET(cimag));
+
+ PRINT("conj",
+ PASS_REAL_ARG_COMPLEX_RET(conj) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(conj));
+
+ PRINT("cproj",
+ PASS_REAL_ARG_COMPLEX_RET(cproj) &&
+ PASS_COMPLEX_ARG_COMPLEX_RET(cproj));
+
+ PRINT("creal",
+ PASS_REAL_ARG_REAL_RET_(creal, _complex) &&
+ PASS_COMPLEX_ARG_REAL_RET(creal));
+}
diff --git a/tools/regression/include/tgmath/tgmath.t b/tools/regression/include/tgmath/tgmath.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/include/tgmath/tgmath.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/ipsec/ipsec.t b/tools/regression/ipsec/ipsec.t
new file mode 100644
index 0000000..6446bf5
--- /dev/null
+++ b/tools/regression/ipsec/ipsec.t
@@ -0,0 +1,104 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# IPsec regression test.
+#
+# This test sets up tunnels on the localhost (lo0) interface
+# with various ciphers by using the setkey(8) command and then
+# attempts to ping each end of the tunnel.
+# The test says which pings worked and which failed.
+#
+# Expected Output: No failures
+
+ipbase="127.255"
+netif="lo0"
+spi="10000"
+
+echo "1..414"
+
+#sysctl net.inet.ipsec.crypto_support=1 >/dev/null 2>&1
+
+ifconfig $netif alias ${ipbase}.0.1/24
+ifconfig $netif alias ${ipbase}.1.1/24
+
+i=1
+
+for ecipher in \
+ des-cbc:12345678 \
+ 3des-cbc:012345678901234567890123 \
+ blowfish-cbc:0123456789012345 \
+ blowfish-cbc:01234567890123456789 \
+ blowfish-cbc:012345678901234567890123 \
+ blowfish-cbc:0123456789012345678901234567 \
+ blowfish-cbc:01234567890123456789012345678901 \
+ blowfish-cbc:012345678901234567890123456789012345 \
+ blowfish-cbc:0123456789012345678901234567890123456789 \
+ blowfish-cbc:01234567890123456789012345678901234567890123 \
+ blowfish-cbc:012345678901234567890123456789012345678901234567 \
+ blowfish-cbc:0123456789012345678901234567890123456789012345678901 \
+ blowfish-cbc:01234567890123456789012345678901234567890123456789012345 \
+ cast128-cbc:0123456789012345 \
+ aes-ctr:01234567890123456789\
+ aes-ctr:0123456789012345678901234567\
+ aes-ctr:012345678901234567890123456789012345\
+ camellia-cbc:0123456789012345\
+ camellia-cbc:012345678901234567890123\
+ camellia-cbc:01234567890123456789012345678901\
+ rijndael-cbc:0123456789012345 \
+ rijndael-cbc:012345678901234567890123 \
+ rijndael-cbc:01234567890123456789012345678901; do
+
+ ealgo=${ecipher%%:*}
+ ekey=${ecipher##*:}
+
+ for acipher in \
+ hmac-md5:0123456789012345 \
+ hmac-sha1:01234567890123456789 \
+ hmac-ripemd160:01234567890123456789 \
+ hmac-sha2-256:01234567890123456789012345678901 \
+ hmac-sha2-384:012345678901234567890123456789012345678901234567 \
+ hmac-sha2-512:0123456789012345678901234567890123456789012345678901234567890123; do
+
+ aalgo=${acipher%%:*}
+ akey=${acipher##*:}
+
+ setkey -F
+ setkey -FP
+
+ (echo "add ${ipbase}.0.1 ${ipbase}.1.1 esp $spi -m transport -E $ealgo \"${ekey}\" -A $aalgo \"${akey}\" ;"
+ echo "add ${ipbase}.1.1 ${ipbase}.0.1 esp `expr $spi + 1` -m transport -E $ealgo \"${ekey}\" -A $aalgo \"${akey}\" ;"
+
+ echo "spdadd ${ipbase}.0.1 ${ipbase}.1.1 any -P out ipsec esp/transport//require;"
+ echo "spdadd ${ipbase}.1.1 ${ipbase}.0.1 any -P in ipsec esp/transport//require;"
+ echo "spdadd ${ipbase}.0.1 ${ipbase}.1.1 any -P in ipsec esp/transport//require;"
+ echo "spdadd ${ipbase}.1.1 ${ipbase}.0.1 any -P out ipsec esp/transport//require;"
+ ) | setkey -c >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "ok $i - setkey ${ealgo} ${ekey} ${aalgo} ${akey}"
+ else
+ echo "not ok $i - setkey ${ealgo} ${ekey} ${aalgo} ${akey}"
+ fi
+ i=$((i+1))
+
+ ping -c 1 -t 2 -S ${ipbase}.0.1 ${ipbase}.1.1 >/dev/null
+ if [ $? -eq 0 ]; then
+ echo "ok $i - test 1 ${ealgo} ${ekey} ${aalgo} ${akey}"
+ else
+ echo "not ok $i - test 1 ${ealgo} ${ekey} ${aalgo} ${akey}"
+ fi
+ i=$((i+1))
+ ping -c 1 -t 2 -S ${ipbase}.1.1 ${ipbase}.0.1 >/dev/null
+ if [ $? -eq 0 ]; then
+ echo "ok $i - test 2 ${ealgo} ${ekey} ${aalgo} ${akey}"
+ else
+ echo "not ok $i - test 2 ${ealgo} ${ekey} ${aalgo} ${akey}"
+ fi
+ i=$((i+1))
+ done
+done
+
+setkey -F
+setkey -FP
+
+ifconfig $netif -alias ${ipbase}.0.1
+ifconfig $netif -alias ${ipbase}.1.1
diff --git a/tools/regression/ipsec/ipsec6.t b/tools/regression/ipsec/ipsec6.t
new file mode 100644
index 0000000..a13edd3
--- /dev/null
+++ b/tools/regression/ipsec/ipsec6.t
@@ -0,0 +1,104 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# IPv6 IPsec test based on ipsec.t, in this same directory, which tests
+# IPsec by setting up a set of tunnels and then sending ICMPv6 packets,
+# aka those generated with ping6(8), across the tunnel.
+#
+# This test should ONLY be used as a smoke test to verify that nothing
+# drastic has been broken, it is insufficient for true protocol conformance
+# testing.
+#
+# Expected Output: No failures.
+
+netif="lo0"
+spi="10000"
+
+echo "1..414"
+
+#sysctl net.inet.ipsec.crypto_support=1 >/dev/null 2>&1
+
+ifconfig $netif inet6 alias 1::1
+ifconfig $netif inet6 alias 2::1
+
+i=1
+
+for ecipher in \
+ des-cbc:12345678 \
+ 3des-cbc:012345678901234567890123 \
+ blowfish-cbc:0123456789012345 \
+ blowfish-cbc:01234567890123456789 \
+ blowfish-cbc:012345678901234567890123 \
+ blowfish-cbc:0123456789012345678901234567 \
+ blowfish-cbc:01234567890123456789012345678901 \
+ blowfish-cbc:012345678901234567890123456789012345 \
+ blowfish-cbc:0123456789012345678901234567890123456789 \
+ blowfish-cbc:01234567890123456789012345678901234567890123 \
+ blowfish-cbc:012345678901234567890123456789012345678901234567 \
+ blowfish-cbc:0123456789012345678901234567890123456789012345678901 \
+ blowfish-cbc:01234567890123456789012345678901234567890123456789012345 \
+ cast128-cbc:0123456789012345 \
+ aes-ctr:01234567890123456789\
+ aes-ctr:0123456789012345678901234567\
+ aes-ctr:012345678901234567890123456789012345\
+ camellia-cbc:0123456789012345\
+ camellia-cbc:012345678901234567890123\
+ camellia-cbc:01234567890123456789012345678901\
+ rijndael-cbc:0123456789012345 \
+ rijndael-cbc:012345678901234567890123 \
+ rijndael-cbc:01234567890123456789012345678901; do
+
+ ealgo=${ecipher%%:*}
+ ekey=${ecipher##*:}
+
+ for acipher in \
+ hmac-md5:0123456789012345 \
+ hmac-sha1:01234567890123456789 \
+ hmac-ripemd160:01234567890123456789 \
+ hmac-sha2-256:01234567890123456789012345678901 \
+ hmac-sha2-384:012345678901234567890123456789012345678901234567 \
+ hmac-sha2-512:0123456789012345678901234567890123456789012345678901234567890123; do
+
+ aalgo=${acipher%%:*}
+ akey=${acipher##*:}
+
+ setkey -F
+ setkey -FP
+
+ (echo "add -6 1::1 2::1 esp $spi -m transport -E $ealgo \"${ekey}\" -A $aalgo \"${akey}\" ;"
+ echo "add -6 2::1 1::1 esp `expr $spi + 1` -m transport -E $ealgo \"${ekey}\" -A $aalgo \"${akey}\" ;"
+
+ echo "spdadd -6 1::1 2::1 any -P out ipsec esp/transport//require;"
+ echo "spdadd -6 2::1 1::1 any -P in ipsec esp/transport//require;"
+ echo "spdadd -6 1::1 2::1 any -P in ipsec esp/transport//require;"
+ echo "spdadd -6 2::1 1::1 any -P out ipsec esp/transport//require;"
+ ) | setkey -c >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "ok $i - setkey ${ealgo} ${ekey} ${aalgo} ${akey}"
+ else
+ echo "not ok $i - setkey ${ealgo} ${ekey} ${aalgo} ${akey}"
+ fi
+ i=$((i+1))
+
+ ping6 -c 1 -i 1 -S 1::1 2::1 >/dev/null
+ if [ $? -eq 0 ]; then
+ echo "ok $i - test 1 ${ealgo} ${ekey} ${aalgo} ${akey}"
+ else
+ echo "not ok $i - test 1 ${ealgo} ${ekey} ${aalgo} ${akey}"
+ fi
+ i=$((i+1))
+ ping6 -c 1 -i 1 -S 2::1 1::1 >/dev/null
+ if [ $? -eq 0 ]; then
+ echo "ok $i - test 2 ${ealgo} ${ekey} ${aalgo} ${akey}"
+ else
+ echo "not ok $i - test 2 ${ealgo} ${ekey} ${aalgo} ${akey}"
+ fi
+ i=$((i+1))
+ done
+done
+
+setkey -F
+setkey -FP
+
+ifconfig $netif inet6 1::1 delete
+ifconfig $netif inet6 2::1 delete
diff --git a/tools/regression/lib/libc/gen/Makefile b/tools/regression/lib/libc/gen/Makefile
new file mode 100644
index 0000000..140b789
--- /dev/null
+++ b/tools/regression/lib/libc/gen/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+TESTS= test-fpclassify test-wordexp
+
+.PHONY: tests
+tests: ${TESTS}
+ for p in ${TESTS}; do ${.OBJDIR}/$$p; done
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/libc/gen/test-fpclassify.c b/tools/regression/lib/libc/gen/test-fpclassify.c
new file mode 100644
index 0000000..8431fe8
--- /dev/null
+++ b/tools/regression/lib/libc/gen/test-fpclassify.c
@@ -0,0 +1,75 @@
+/*-
+ * Copyright (c) 2003 Mike Barcroft <mike@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <assert.h>
+#include <math.h>
+#include <stdlib.h>
+
+int
+main(void)
+{
+
+ assert(fpclassify((float)0) == FP_ZERO);
+ assert(fpclassify((float)-0.0) == FP_ZERO);
+ assert(fpclassify((float)1) == FP_NORMAL);
+ assert(fpclassify((float)1000) == FP_NORMAL);
+#ifndef __alpha__
+ assert(fpclassify(0x1.2p-150f) == FP_SUBNORMAL);
+#endif
+ assert(fpclassify(HUGE_VALF) == FP_INFINITE);
+ assert(fpclassify((float)HUGE_VAL) == FP_INFINITE);
+ assert(fpclassify((float)HUGE_VALL) == FP_INFINITE);
+ assert(fpclassify(NAN) == FP_NAN);
+
+ assert(fpclassify((double)0) == FP_ZERO);
+ assert(fpclassify((double)-0) == FP_ZERO);
+ assert(fpclassify((double)1) == FP_NORMAL);
+ assert(fpclassify((double)1000) == FP_NORMAL);
+#ifndef __alpha__
+ assert(fpclassify(0x1.2p-1075) == FP_SUBNORMAL);
+#endif
+ assert(fpclassify(HUGE_VAL) == FP_INFINITE);
+ assert(fpclassify((double)HUGE_VALF) == FP_INFINITE);
+ assert(fpclassify((double)HUGE_VALL) == FP_INFINITE);
+ assert(fpclassify((double)NAN) == FP_NAN);
+
+ assert(fpclassify((long double)0) == FP_ZERO);
+ assert(fpclassify((long double)-0.0) == FP_ZERO);
+ assert(fpclassify((long double)1) == FP_NORMAL);
+ assert(fpclassify((long double)1000) == FP_NORMAL);
+#ifndef __alpha__
+ assert(fpclassify(0x1.2p-16383L) == FP_SUBNORMAL);
+#endif
+ assert(fpclassify(HUGE_VALL) == FP_INFINITE);
+ assert(fpclassify((long double)HUGE_VALF) == FP_INFINITE);
+ assert(fpclassify((long double)HUGE_VAL) == FP_INFINITE);
+ assert(fpclassify((long double)NAN) == FP_NAN);
+
+ printf("PASS fpclassify()\n");
+ exit(0);
+}
diff --git a/tools/regression/lib/libc/gen/test-wordexp.c b/tools/regression/lib/libc/gen/test-wordexp.c
new file mode 100644
index 0000000..49490d8
--- /dev/null
+++ b/tools/regression/lib/libc/gen/test-wordexp.c
@@ -0,0 +1,174 @@
+/*-
+ * Copyright (c) 2003 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for wordexp() and wordfree() as specified by
+ * IEEE Std. 1003.1-2001.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wordexp.h>
+
+int
+main(int argc, char *argv[])
+{
+ wordexp_t we;
+ int r;
+
+ /* Test that the macros are there. */
+ (void)(WRDE_APPEND + WRDE_DOOFS + WRDE_NOCMD + WRDE_REUSE +
+ WRDE_SHOWERR + WRDE_UNDEF);
+ (void)(WRDE_BADCHAR + WRDE_BADVAL + WRDE_CMDSUB + WRDE_NOSPACE +
+ WRDE_SYNTAX);
+
+ /* Simple test. */
+ r = wordexp("hello world", &we, 0);
+ assert(r == 0);
+ assert(we.we_wordc == 2);
+ assert(strcmp(we.we_wordv[0], "hello") == 0);
+ assert(strcmp(we.we_wordv[1], "world") == 0);
+ assert(we.we_wordv[2] == NULL);
+ wordfree(&we);
+
+ /* WRDE_DOOFS */
+ we.we_offs = 3;
+ r = wordexp("hello world", &we, WRDE_DOOFS);
+ assert(r == 0);
+ assert(we.we_wordc == 2);
+ assert(we.we_wordv[0] == NULL);
+ assert(we.we_wordv[1] == NULL);
+ assert(we.we_wordv[2] == NULL);
+ assert(strcmp(we.we_wordv[3], "hello") == 0);
+ assert(strcmp(we.we_wordv[4], "world") == 0);
+ assert(we.we_wordv[5] == NULL);
+ wordfree(&we);
+
+ /* WRDE_REUSE */
+ r = wordexp("hello world", &we, 0);
+ r = wordexp("hello world", &we, WRDE_REUSE);
+ assert(r == 0);
+ assert(we.we_wordc == 2);
+ assert(strcmp(we.we_wordv[0], "hello") == 0);
+ assert(strcmp(we.we_wordv[1], "world") == 0);
+ assert(we.we_wordv[2] == NULL);
+ wordfree(&we);
+
+ /* WRDE_APPEND */
+ r = wordexp("this is", &we, 0);
+ assert(r == 0);
+ r = wordexp("a test", &we, WRDE_APPEND);
+ assert(r == 0);
+ assert(we.we_wordc == 4);
+ assert(strcmp(we.we_wordv[0], "this") == 0);
+ assert(strcmp(we.we_wordv[1], "is") == 0);
+ assert(strcmp(we.we_wordv[2], "a") == 0);
+ assert(strcmp(we.we_wordv[3], "test") == 0);
+ assert(we.we_wordv[4] == NULL);
+ wordfree(&we);
+
+ /* WRDE_DOOFS + WRDE_APPEND */
+ we.we_offs = 2;
+ r = wordexp("this is", &we, WRDE_DOOFS);
+ assert(r == 0);
+ r = wordexp("a test", &we, WRDE_APPEND|WRDE_DOOFS);
+ assert(r == 0);
+ r = wordexp("of wordexp", &we, WRDE_APPEND|WRDE_DOOFS);
+ assert(r == 0);
+ assert(we.we_wordc == 6);
+ assert(we.we_wordv[0] == NULL);
+ assert(we.we_wordv[1] == NULL);
+ assert(strcmp(we.we_wordv[2], "this") == 0);
+ assert(strcmp(we.we_wordv[3], "is") == 0);
+ assert(strcmp(we.we_wordv[4], "a") == 0);
+ assert(strcmp(we.we_wordv[5], "test") == 0);
+ assert(strcmp(we.we_wordv[6], "of") == 0);
+ assert(strcmp(we.we_wordv[7], "wordexp") == 0);
+ assert(we.we_wordv[8] == NULL);
+ wordfree(&we);
+
+ /* WRDE_UNDEF */
+ r = wordexp("${dont_set_me}", &we, WRDE_UNDEF);
+ assert(r == WRDE_BADVAL);
+
+ /* WRDE_NOCMD */
+ r = wordexp("`date`", &we, WRDE_NOCMD);
+ assert(r == WRDE_CMDSUB);
+ r = wordexp("\"`date`\"", &we, WRDE_NOCMD);
+ assert(r == WRDE_CMDSUB);
+ r = wordexp("$(date)", &we, WRDE_NOCMD);
+ assert(r == WRDE_CMDSUB);
+ r = wordexp("\"$(date)\"", &we, WRDE_NOCMD);
+ assert(r == WRDE_CMDSUB);
+ r = wordexp("$((3+5))", &we, WRDE_NOCMD);
+ assert(r == 0);
+ r = wordexp("\\$\\(date\\)", &we, WRDE_NOCMD|WRDE_REUSE);
+ assert(r == 0);
+ r = wordexp("'`date`'", &we, WRDE_NOCMD|WRDE_REUSE);
+ assert(r == 0);
+ r = wordexp("'$(date)'", &we, WRDE_NOCMD|WRDE_REUSE);
+ assert(r == 0);
+ wordfree(&we);
+
+ /* WRDE_BADCHAR */
+ r = wordexp("'\n|&;<>(){}'", &we, 0);
+ assert(r == 0);
+ r = wordexp("\"\n|&;<>(){}\"", &we, WRDE_REUSE);
+ assert(r == 0);
+ r = wordexp("\\\n\\|\\&\\;\\<\\>\\(\\)\\{\\}", &we, WRDE_REUSE);
+ assert(r == 0);
+ wordfree(&we);
+ r = wordexp("test \n test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+ r = wordexp("test | test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+ r = wordexp("test & test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+ r = wordexp("test ; test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+ r = wordexp("test > test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+ r = wordexp("test < test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+ r = wordexp("test ( test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+ r = wordexp("test ) test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+ r = wordexp("test { test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+ r = wordexp("test } test", &we, 0);
+ assert(r == WRDE_BADCHAR);
+
+ printf("PASS wordexp()\n");
+ printf("PASS wordfree()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/Makefile b/tools/regression/lib/libc/locale/Makefile
new file mode 100644
index 0000000..5fb9a94
--- /dev/null
+++ b/tools/regression/lib/libc/locale/Makefile
@@ -0,0 +1,25 @@
+# $FreeBSD$
+
+TESTS= test-mbrtowc \
+ test-wcrtomb \
+ test-mbsnrtowcs \
+ test-mbsrtowcs \
+ test-wcsnrtombs \
+ test-wcsrtombs \
+ test-btowc \
+ test-mbrlen \
+ test-mbtowc \
+ test-wctomb \
+ test-mbstowcs \
+ test-wcstombs \
+ test-mblen \
+ test-iswctype \
+ test-towctrans
+
+.PHONY: tests
+tests: ${TESTS}
+ for p in ${TESTS}; do ${.OBJDIR}/$$p; done
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/libc/locale/test-btowc.c b/tools/regression/lib/libc/locale/test-btowc.c
new file mode 100644
index 0000000..9ed4582
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-btowc.c
@@ -0,0 +1,72 @@
+/*-
+ * Copyright (c) 2002 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for btowc() and wctob() as specified by IEEE Std. 1003.1-2001
+ * and ISO/IEC 9899:1999.
+ *
+ * The function is tested in the "C" and "ja_JP.eucJP" locales.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ int i;
+
+ printf("1..2\n");
+
+ /*
+ * C/POSIX locale.
+ */
+ assert(btowc(EOF) == WEOF);
+ assert(wctob(WEOF) == EOF);
+ for (i = 0; i < UCHAR_MAX; i++)
+ assert(btowc(i) == (wchar_t)i && i == (int)wctob(i));
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+ assert(btowc('A') == L'A' && wctob(L'A') == 'A');
+ assert(btowc(0xa3) == WEOF && wctob(0xa3c1) == EOF);
+
+ printf("ok 1 - btowc()\n");
+ printf("ok 2 - wctob()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-btowc.t b/tools/regression/lib/libc/locale/test-btowc.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-btowc.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-iswctype.c b/tools/regression/lib/libc/locale/test-iswctype.c
new file mode 100644
index 0000000..ca9621a
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-iswctype.c
@@ -0,0 +1,101 @@
+/*-
+ * Copyright (c) 2003 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for wctype() and iswctype() as specified by
+ * IEEE Std. 1003.1-2001 and ISO/IEC 9899:1999.
+ *
+ * The functions are tested in the "C" and "ja_JP.eucJP" locales.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <locale.h>
+#include <stdio.h>
+#include <wchar.h>
+#include <wctype.h>
+
+int
+main(int argc, char *argv[])
+{
+ wctype_t t;
+ int i, j;
+ struct {
+ const char *name;
+ int (*func)(wint_t);
+ } cls[] = {
+ { "alnum", iswalnum },
+ { "alpha", iswalpha },
+ { "blank", iswblank },
+ { "cntrl", iswcntrl },
+ { "digit", iswdigit },
+ { "graph", iswgraph },
+ { "lower", iswlower },
+ { "print", iswprint },
+ { "punct", iswpunct },
+ { "space", iswspace },
+ { "upper", iswupper },
+ { "xdigit", iswxdigit }
+ };
+
+ printf("1..2\n");
+
+ /*
+ * C/POSIX locale.
+ */
+ for (i = 0; i < sizeof(cls) / sizeof(*cls); i++) {
+ t = wctype(cls[i].name);
+ assert(t != 0);
+ for (j = 0; j < 256; j++)
+ assert(cls[i].func(j) == iswctype(j, t));
+ }
+ t = wctype("elephant");
+ assert(t == 0);
+ for (i = 0; i < 256; i++)
+ assert(iswctype(i, t) == 0);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ for (i = 0; i < sizeof(cls) / sizeof(*cls); i++) {
+ t = wctype(cls[i].name);
+ assert(t != 0);
+ for (j = 0; j < 65536; j++)
+ assert(cls[i].func(j) == iswctype(j, t));
+ }
+ t = wctype("elephant");
+ assert(t == 0);
+ for (i = 0; i < 65536; i++)
+ assert(iswctype(i, t) == 0);
+
+ printf("ok 1 - iswctype()\n");
+ printf("ok 2 - wctype()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-iswctype.t b/tools/regression/lib/libc/locale/test-iswctype.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-iswctype.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-mblen.c b/tools/regression/lib/libc/locale/test-mblen.c
new file mode 100644
index 0000000..dd07359
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mblen.c
@@ -0,0 +1,114 @@
+/*-
+ * Copyright (c) 2002-2004 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for mblen(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1990.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ size_t len;
+ char buf[MB_LEN_MAX + 1];
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ assert(MB_CUR_MAX == 1);
+
+ /* No shift states in C locale. */
+ assert(mblen(NULL, 0) == 0);
+
+ /* Null wide character. */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = '\0';
+ assert(mblen(buf, 1) == 0);
+
+ /* Latin letter A. */
+ buf[0] = 'A';
+ assert(mblen(buf, 1) == 1);
+
+ /* Incomplete character sequence. */
+ buf[0] = '\0';
+ assert(mblen(buf, 0) == -1);
+ assert(mblen(NULL, 0) == 0);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ /* No shift states in EUC. */
+ assert(mblen(NULL, 0) == 0);
+
+ /* Null wide character. */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = '\0';
+ assert(mblen(buf, 1) == 0);
+
+ /* Latin letter A. */
+ buf[0] = 'A';
+ assert(mblen(buf, 1) == 1);
+
+ /* Incomplete character sequence. */
+ buf[0] = '\0';
+ assert(mblen(buf, 0) == -1);
+ assert(mblen(NULL, 0) == 0);
+
+ /* Incomplete character sequence (truncated double-byte). */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0xa3;
+ buf[1] = 0x00;
+ assert(mblen(buf, 1) == -1);
+ assert(mblen(NULL, 0) == 0);
+
+ /* Same as above, but complete. */
+ buf[1] = 0xc1;
+ assert(mblen(buf, 2) == 2);
+
+ printf("ok 1 - mblen()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-mblen.t b/tools/regression/lib/libc/locale/test-mblen.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mblen.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-mbrlen.c b/tools/regression/lib/libc/locale/test-mbrlen.c
new file mode 100644
index 0000000..3198a77
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbrlen.c
@@ -0,0 +1,129 @@
+/*-
+ * Copyright (c) 2002 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for mbrlen(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1999.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ mbstate_t s;
+ size_t len;
+ char buf[MB_LEN_MAX + 1];
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ assert(MB_CUR_MAX == 1);
+
+ /* Null wide character, internal state. */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0;
+ assert(mbrlen(buf, 1, NULL) == 0);
+
+ /* Null wide character. */
+ memset(&s, 0, sizeof(s));
+ assert(mbrlen(buf, 1, &s) == 0);
+
+ /* Latin letter A, internal state. */
+ assert(mbrlen(NULL, 0, NULL) == 0);
+ buf[0] = 'A';
+ assert(mbrlen(buf, 1, NULL) == 1);
+
+ /* Latin letter A. */
+ memset(&s, 0, sizeof(s));
+ assert(mbrlen(buf, 1, &s) == 1);
+
+ /* Incomplete character sequence. */
+ memset(&s, 0, sizeof(s));
+ assert(mbrlen(buf, 0, &s) == (size_t)-2);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ /* Null wide character, internal state. */
+ assert(mbrlen(NULL, 0, NULL) == 0);
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0;
+ assert(mbrlen(buf, 1, NULL) == 0);
+
+ /* Null wide character. */
+ memset(&s, 0, sizeof(s));
+ assert(mbrlen(buf, 1, &s) == 0);
+
+ /* Latin letter A, internal state. */
+ assert(mbrlen(NULL, 0, NULL) == 0);
+ buf[0] = 'A';
+ assert(mbrlen(buf, 1, NULL) == 1);
+
+ /* Latin letter A. */
+ memset(&s, 0, sizeof(s));
+ assert(mbrlen(buf, 1, &s) == 1);
+
+ /* Incomplete character sequence (zero length). */
+ memset(&s, 0, sizeof(s));
+ assert(mbrlen(buf, 0, &s) == (size_t)-2);
+
+ /* Incomplete character sequence (truncated double-byte). */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0xa3;
+ buf[1] = 0x00;
+ memset(&s, 0, sizeof(s));
+ assert(mbrlen(buf, 1, &s) == (size_t)-2);
+
+ /* Same as above, but complete. */
+ buf[1] = 0xc1;
+ memset(&s, 0, sizeof(s));
+ assert(mbrlen(buf, 2, &s) == 2);
+
+ printf("ok 1 - mbrlen()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-mbrlen.t b/tools/regression/lib/libc/locale/test-mbrlen.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbrlen.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-mbrtowc.c b/tools/regression/lib/libc/locale/test-mbrtowc.c
new file mode 100644
index 0000000..e9a2ea0
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbrtowc.c
@@ -0,0 +1,163 @@
+/*-
+ * Copyright (c) 2002 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for mbrtowc(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1999.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ mbstate_t s;
+ size_t len;
+ wchar_t wc;
+ char buf[MB_LEN_MAX + 1];
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ assert(MB_CUR_MAX == 1);
+
+ /* Null wide character, internal state. */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0;
+ assert(mbrtowc(&wc, buf, 1, NULL) == 0);
+ assert(wc == 0);
+
+ /* Null wide character. */
+ memset(&s, 0, sizeof(s));
+ assert(mbrtowc(&wc, buf, 1, &s) == 0);
+ assert(wc == 0);
+
+ /* Latin letter A, internal state. */
+ assert(mbrtowc(NULL, 0, 0, NULL) == 0);
+ buf[0] = 'A';
+ assert(mbrtowc(&wc, buf, 1, NULL) == 1);
+ assert(wc == L'A');
+
+ /* Latin letter A. */
+ memset(&s, 0, sizeof(s));
+ assert(mbrtowc(&wc, buf, 1, &s) == 1);
+ assert(wc == L'A');
+
+ /* Incomplete character sequence. */
+ wc = L'z';
+ memset(&s, 0, sizeof(s));
+ assert(mbrtowc(&wc, buf, 0, &s) == (size_t)-2);
+ assert(wc == L'z');
+
+ /* Check that mbrtowc() doesn't access the buffer when n == 0. */
+ wc = L'z';
+ memset(&s, 0, sizeof(s));
+ buf[0] = '\0';
+ assert(mbrtowc(&wc, buf, 0, &s) == (size_t)-2);
+ assert(wc == L'z');
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ /* Null wide character, internal state. */
+ assert(mbrtowc(NULL, 0, 0, NULL) == 0);
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0;
+ assert(mbrtowc(&wc, buf, 1, NULL) == 0);
+ assert(wc == 0);
+
+ /* Null wide character. */
+ memset(&s, 0, sizeof(s));
+ assert(mbrtowc(&wc, buf, 1, &s) == 0);
+ assert(wc == 0);
+
+ /* Latin letter A, internal state. */
+ assert(mbrtowc(NULL, 0, 0, NULL) == 0);
+ buf[0] = 'A';
+ assert(mbrtowc(&wc, buf, 1, NULL) == 1);
+ assert(wc == L'A');
+
+ /* Latin letter A. */
+ memset(&s, 0, sizeof(s));
+ assert(mbrtowc(&wc, buf, 1, &s) == 1);
+ assert(wc == L'A');
+
+ /* Incomplete character sequence (zero length). */
+ wc = L'z';
+ memset(&s, 0, sizeof(s));
+ assert(mbrtowc(&wc, buf, 0, &s) == (size_t)-2);
+ assert(wc == L'z');
+
+ /* Incomplete character sequence (truncated double-byte). */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0xa3;
+ buf[1] = 0x00;
+ memset(&s, 0, sizeof(s));
+ wc = 0;
+ assert(mbrtowc(&wc, buf, 1, &s) == (size_t)-2);
+
+ /* Same as above, but complete. */
+ buf[1] = 0xc1;
+ memset(&s, 0, sizeof(s));
+ wc = 0;
+ assert(mbrtowc(&wc, buf, 2, &s) == 2);
+ assert(wc == 0xa3c1);
+
+ /* Test restarting behaviour. */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0xa3;
+ memset(&s, 0, sizeof(s));
+ wc = 0;
+ assert(mbrtowc(&wc, buf, 1, &s) == (size_t)-2);
+ assert(wc == 0);
+ buf[0] = 0xc1;
+ assert(mbrtowc(&wc, buf, 1, &s) == 1);
+ assert(wc == 0xa3c1);
+
+ printf("ok 1 - mbrtowc()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-mbrtowc.t b/tools/regression/lib/libc/locale/test-mbrtowc.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbrtowc.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-mbsnrtowcs.c b/tools/regression/lib/libc/locale/test-mbsnrtowcs.c
new file mode 100644
index 0000000..585dd4e
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbsnrtowcs.c
@@ -0,0 +1,194 @@
+/*-
+ * Copyright (c) 2002-2004 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for mbsnrtowcs().
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ char srcbuf[128];
+ wchar_t dstbuf[128];
+ char *src;
+ mbstate_t s;
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ /* Simple null terminated string. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 6, sizeof(dstbuf) /
+ sizeof(*dstbuf), &s) == 5);
+ assert(wcscmp(dstbuf, L"hello") == 0);
+ assert(dstbuf[6] == 0xcccc);
+ assert(src == NULL);
+
+ /* Simple null terminated string, stopping early. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 4, sizeof(dstbuf) /
+ sizeof(*dstbuf), &s) == 4);
+ assert(wmemcmp(dstbuf, L"hell", 4) == 0);
+ assert(dstbuf[5] == 0xcccc);
+ assert(src == srcbuf + 4);
+
+ /* Not enough space in destination buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 6, 4, &s) == 4);
+ assert(wmemcmp(dstbuf, L"hell", 4) == 0);
+ assert(dstbuf[5] == 0xcccc);
+ assert(src == srcbuf + 4);
+
+ /* Null terminated string, internal dest. buffer */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(mbsnrtowcs(NULL, (const char **)&src, 6, 0, &s) == 5);
+
+ /* Null terminated string, internal dest. buffer, stopping early */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(mbsnrtowcs(NULL, (const char **)&src, 4, 0, &s) == 4);
+
+ /* Null terminated string, internal state. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ src = srcbuf;
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 6, sizeof(dstbuf) /
+ sizeof(*dstbuf), NULL) == 5);
+ assert(wcscmp(dstbuf, L"hello") == 0);
+ assert(dstbuf[6] == 0xcccc);
+ assert(src == NULL);
+
+ /* Null terminated string, internal state, internal dest. buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ src = srcbuf;
+ assert(mbsnrtowcs(NULL, (const char **)&src, 6, 0, NULL) == 5);
+
+ /* Empty source buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ srcbuf[0] = '\0';
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 1, 1, &s) == 0);
+ assert(dstbuf[0] == 0);
+ assert(dstbuf[1] == 0xcccc);
+ assert(src == NULL);
+
+ /* Zero length destination buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 1, 0, &s) == 0);
+ assert(dstbuf[0] == 0xcccc);
+ assert(src == srcbuf);
+
+ /* Zero length source buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 0, 1, &s) == 0);
+ assert(dstbuf[0] == 0xcccc);
+ assert(src == srcbuf);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "\xA3\xC1 B \xA3\xC3");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 8, sizeof(dstbuf) /
+ sizeof(*dstbuf), &s) == 5);
+ assert(dstbuf[0] == 0xA3C1 && dstbuf[1] == 0x20 && dstbuf[2] == 0x42 &&
+ dstbuf[3] == 0x20 && dstbuf[4] == 0xA3C3 && dstbuf[5] == 0);
+ assert(src == NULL);
+
+ /* Partial character. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "\xA3\xC1 B \xA3\xC3");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 6, sizeof(dstbuf) /
+ sizeof(*dstbuf), &s) == 4);
+ assert(src == srcbuf + 6);
+ assert(!mbsinit(&s));
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 1, sizeof(dstbuf) /
+ sizeof(*dstbuf), &s) == 1);
+ assert(src == srcbuf + 7);
+ assert(mbsnrtowcs(dstbuf, (const char **)&src, 1, sizeof(dstbuf) /
+ sizeof(*dstbuf), &s) == 0);
+ assert(src == NULL);
+
+ printf("ok 1 - mbsnrtowcs()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-mbsnrtowcs.t b/tools/regression/lib/libc/locale/test-mbsnrtowcs.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbsnrtowcs.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-mbsrtowcs.c b/tools/regression/lib/libc/locale/test-mbsrtowcs.c
new file mode 100644
index 0000000..dd6a7e1
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbsrtowcs.c
@@ -0,0 +1,150 @@
+/*-
+ * Copyright (c) 2002 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for mbsrtowcs(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1999.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ char srcbuf[128];
+ wchar_t dstbuf[128];
+ char *src;
+ mbstate_t s;
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ /* Simple null terminated string. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(mbsrtowcs(dstbuf, (const char **)&src, sizeof(dstbuf) /
+ sizeof(*dstbuf), &s) == 5);
+ assert(wcscmp(dstbuf, L"hello") == 0);
+ assert(dstbuf[6] == 0xcccc);
+ assert(src == NULL);
+
+ /* Not enough space in destination buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(mbsrtowcs(dstbuf, (const char **)&src, 4, &s) == 4);
+ assert(wmemcmp(dstbuf, L"hell", 4) == 0);
+ assert(dstbuf[5] == 0xcccc);
+ assert(src == srcbuf + 4);
+
+ /* Null terminated string, internal dest. buffer */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(mbsrtowcs(NULL, (const char **)&src, 0, &s) == 5);
+
+ /* Null terminated string, internal state. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ src = srcbuf;
+ assert(mbsrtowcs(dstbuf, (const char **)&src, sizeof(dstbuf) /
+ sizeof(*dstbuf), NULL) == 5);
+ assert(wcscmp(dstbuf, L"hello") == 0);
+ assert(dstbuf[6] == 0xcccc);
+ assert(src == NULL);
+
+ /* Null terminated string, internal state, internal dest. buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ src = srcbuf;
+ assert(mbsrtowcs(NULL, (const char **)&src, 0, NULL) == 5);
+
+ /* Empty source buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ srcbuf[0] = '\0';
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbsrtowcs(dstbuf, (const char **)&src, 1, &s) == 0);
+ assert(dstbuf[0] == 0);
+ assert(dstbuf[1] == 0xcccc);
+ assert(src == NULL);
+
+ /* Zero length destination buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbsrtowcs(dstbuf, (const char **)&src, 0, &s) == 0);
+ assert(dstbuf[0] == 0xcccc);
+ assert(src == srcbuf);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "\xA3\xC1 B \xA3\xC3");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbsrtowcs(dstbuf, (const char **)&src, sizeof(dstbuf) /
+ sizeof(*dstbuf), &s) == 5);
+ assert(dstbuf[0] == 0xA3C1 && dstbuf[1] == 0x20 && dstbuf[2] == 0x42 &&
+ dstbuf[3] == 0x20 && dstbuf[4] == 0xA3C3 && dstbuf[5] == 0);
+ assert(src == NULL);
+
+ printf("ok 1 - mbsrtowcs()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-mbsrtowcs.t b/tools/regression/lib/libc/locale/test-mbsrtowcs.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbsrtowcs.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-mbstowcs.c b/tools/regression/lib/libc/locale/test-mbstowcs.c
new file mode 100644
index 0000000..18039dd
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbstowcs.c
@@ -0,0 +1,112 @@
+/*-
+ * Copyright (c) 2002 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for mbstowcs(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1999.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ char srcbuf[128];
+ wchar_t dstbuf[128];
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ /* Simple null terminated string. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbstowcs(dstbuf, srcbuf, sizeof(dstbuf) / sizeof(*dstbuf)) == 5);
+ assert(wcscmp(dstbuf, L"hello") == 0);
+ assert(dstbuf[6] == 0xcccc);
+
+ /* Not enough space in destination buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbstowcs(dstbuf, srcbuf, 4) == 4);
+ assert(wmemcmp(dstbuf, L"hell", 4) == 0);
+ assert(dstbuf[5] == 0xcccc);
+
+ /* Null terminated string, internal dest. buffer (XSI extension) */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ assert(mbstowcs(NULL, srcbuf, 0) == 5);
+
+ /* Empty source buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ srcbuf[0] = '\0';
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbstowcs(dstbuf, srcbuf, 1) == 0);
+ assert(dstbuf[0] == 0);
+ assert(dstbuf[1] == 0xcccc);
+
+ /* Zero length destination buffer. */
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "hello");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbstowcs(dstbuf, srcbuf, 0) == 0);
+ assert(dstbuf[0] == 0xcccc);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ memset(srcbuf, 0xcc, sizeof(srcbuf));
+ strcpy(srcbuf, "\xA3\xC1 B \xA3\xC3");
+ wmemset(dstbuf, 0xcccc, sizeof(dstbuf) / sizeof(*dstbuf));
+ assert(mbstowcs(dstbuf, srcbuf, sizeof(dstbuf) / sizeof(*dstbuf)) == 5);
+ assert(dstbuf[0] == 0xA3C1 && dstbuf[1] == 0x20 && dstbuf[2] == 0x42 &&
+ dstbuf[3] == 0x20 && dstbuf[4] == 0xA3C3 && dstbuf[5] == 0);
+
+ printf("ok 1 - mbstowcs()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-mbstowcs.t b/tools/regression/lib/libc/locale/test-mbstowcs.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbstowcs.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-mbtowc.c b/tools/regression/lib/libc/locale/test-mbtowc.c
new file mode 100644
index 0000000..5ee070c
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbtowc.c
@@ -0,0 +1,124 @@
+/*-
+ * Copyright (c) 2002-2004 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for mbtowc(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1990.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ size_t len;
+ wchar_t wc;
+ char buf[MB_LEN_MAX + 1];
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ assert(MB_CUR_MAX == 1);
+
+ /* No shift states in C locale. */
+ assert(mbtowc(NULL, NULL, 0) == 0);
+
+ /* Null wide character. */
+ wc = 0xcccc;
+ memset(buf, 0, sizeof(buf));
+ assert(mbtowc(&wc, buf, 1) == 0);
+ assert(wc == 0);
+
+ /* Latin letter A. */
+ buf[0] = 'A';
+ assert(mbtowc(&wc, buf, 1) == 1);
+ assert(wc == L'A');
+
+ /* Incomplete character sequence. */
+ wc = L'z';
+ buf[0] = '\0';
+ assert(mbtowc(&wc, buf, 0) == -1);
+ assert(wc == L'z');
+ assert(mbtowc(NULL, NULL, 0) == 0);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ /* Null wide character */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0;
+ wc = 0xcccc;
+ assert(mbtowc(&wc, buf, 1) == 0);
+ assert(wc == 0);
+
+ /* Latin letter A. */
+ buf[0] = 'A';
+ assert(mbtowc(&wc, buf, 1) == 1);
+ assert(wc == L'A');
+
+ /* Incomplete character sequence (zero length). */
+ wc = L'z';
+ buf[0] = '\0';
+ assert(mbtowc(&wc, buf, 0) == -1);
+ assert(wc == L'z');
+ assert(mbtowc(NULL, NULL, 0) == 0);
+
+ /* Incomplete character sequence (truncated double-byte). */
+ memset(buf, 0xcc, sizeof(buf));
+ buf[0] = 0xa3;
+ buf[1] = 0x00;
+ wc = L'z';
+ assert(mbtowc(&wc, buf, 1) == -1);
+ assert(wc == L'z');
+ assert(mbtowc(NULL, NULL, 0) == 0);
+
+ /* Same as above, but complete. */
+ buf[1] = 0xc1;
+ assert(mbtowc(&wc, buf, 2) == 2);
+ assert(wc == 0xa3c1);
+
+ printf("ok 1 - mbtowc()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-mbtowc.t b/tools/regression/lib/libc/locale/test-mbtowc.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-mbtowc.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-towctrans.c b/tools/regression/lib/libc/locale/test-towctrans.c
new file mode 100644
index 0000000..6c0e428
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-towctrans.c
@@ -0,0 +1,91 @@
+/*-
+ * Copyright (c) 2003 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for wctrans() and towctrans() as specified by
+ * IEEE Std. 1003.1-2001 and ISO/IEC 9899:1999.
+ *
+ * The functions are tested in the "C" and "ja_JP.eucJP" locales.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <locale.h>
+#include <stdio.h>
+#include <wchar.h>
+#include <wctype.h>
+
+int
+main(int argc, char *argv[])
+{
+ wctype_t t;
+ int i, j;
+ struct {
+ const char *name;
+ wint_t (*func)(wint_t);
+ } tran[] = {
+ { "tolower", towlower },
+ { "toupper", towupper },
+ };
+
+ printf("1..2\n");
+
+ /*
+ * C/POSIX locale.
+ */
+ for (i = 0; i < sizeof(tran) / sizeof(*tran); i++) {
+ t = wctrans(tran[i].name);
+ assert(t != 0);
+ for (j = 0; j < 256; j++)
+ assert(tran[i].func(j) == towctrans(j, t));
+ }
+ t = wctrans("elephant");
+ assert(t == 0);
+ for (i = 0; i < 256; i++)
+ assert(towctrans(i, t) == i);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ for (i = 0; i < sizeof(tran) / sizeof(*tran); i++) {
+ t = wctrans(tran[i].name);
+ assert(t != 0);
+ for (j = 0; j < 65536; j++)
+ assert(tran[i].func(j) == towctrans(j, t));
+ }
+ t = wctrans("elephant");
+ assert(t == 0);
+ for (i = 0; i < 65536; i++)
+ assert(towctrans(i, t) == i);
+
+ printf("ok 1 - towctrans()\n");
+ printf("ok 2 - wctrans()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-towctrans.t b/tools/regression/lib/libc/locale/test-towctrans.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-towctrans.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-wcrtomb.c b/tools/regression/lib/libc/locale/test-wcrtomb.c
new file mode 100644
index 0000000..d7ec029
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wcrtomb.c
@@ -0,0 +1,134 @@
+/*-
+ * Copyright (c) 2002 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for wcrtomb(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1999.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ mbstate_t s;
+ size_t len;
+ char buf[MB_LEN_MAX + 1];
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ assert(MB_CUR_MAX == 1);
+
+ /*
+ * If the buffer argument is NULL, wc is implicitly L'\0',
+ * wcrtomb() resets its internal state.
+ */
+ assert(wcrtomb(NULL, L'\0', NULL) == 1);
+ assert(wcrtomb(NULL, UCHAR_MAX + 1, NULL) == 1);
+
+ /* Null wide character. */
+ memset(&s, 0, sizeof(s));
+ memset(buf, 0xcc, sizeof(buf));
+ len = wcrtomb(buf, L'\0', &s);
+ assert(len == 1);
+ assert((unsigned char)buf[0] == 0 && (unsigned char)buf[1] == 0xcc);
+
+ /* Latin letter A, internal state. */
+ assert(wcrtomb(NULL, L'\0', NULL) == 1);
+ assert(wcrtomb(NULL, L'A', NULL) == 1);
+
+ /* Latin letter A. */
+ memset(&s, 0, sizeof(s));
+ memset(buf, 0xcc, sizeof(buf));
+ len = wcrtomb(buf, L'A', &s);
+ assert(len == 1);
+ assert((unsigned char)buf[0] == 'A' && (unsigned char)buf[1] == 0xcc);
+
+ /* Invalid code. */
+ assert(wcrtomb(buf, UCHAR_MAX + 1, NULL) == (size_t)-1);
+ assert(errno == EILSEQ);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX == 3);
+
+ /*
+ * If the buffer argument is NULL, wc is implicitly L'\0',
+ * wcrtomb() resets its internal state.
+ */
+ assert(wcrtomb(NULL, L'\0', NULL) == 1);
+
+ /* Null wide character. */
+ memset(&s, 0, sizeof(s));
+ memset(buf, 0xcc, sizeof(buf));
+ len = wcrtomb(buf, L'\0', &s);
+ assert(len == 1);
+ assert((unsigned char)buf[0] == 0 && (unsigned char)buf[1] == 0xcc);
+
+ /* Latin letter A, internal state. */
+ assert(wcrtomb(NULL, L'\0', NULL) == 1);
+ assert(wcrtomb(NULL, L'A', NULL) == 1);
+
+ /* Latin letter A. */
+ memset(&s, 0, sizeof(s));
+ memset(buf, 0xcc, sizeof(buf));
+ len = wcrtomb(buf, L'A', &s);
+ assert(len == 1);
+ assert((unsigned char)buf[0] == 'A' && (unsigned char)buf[1] == 0xcc);
+
+ /* Full width letter A. */
+ memset(&s, 0, sizeof(s));
+ memset(buf, 0xcc, sizeof(buf));
+ len = wcrtomb(buf, 0xa3c1, &s);
+ assert(len == 2);
+ assert((unsigned char)buf[0] == 0xa3 &&
+ (unsigned char)buf[1] == 0xc1 &&
+ (unsigned char)buf[2] == 0xcc);
+
+ printf("ok 1 - wcrtomb()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-wcrtomb.t b/tools/regression/lib/libc/locale/test-wcrtomb.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wcrtomb.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-wcsnrtombs.c b/tools/regression/lib/libc/locale/test-wcsnrtombs.c
new file mode 100644
index 0000000..2290cac
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wcsnrtombs.c
@@ -0,0 +1,194 @@
+/*-
+ * Copyright (c) 2002-2004 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for wcsnrtombs().
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ wchar_t srcbuf[128];
+ char dstbuf[128];
+ wchar_t *src;
+ mbstate_t s;
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ /* Simple null terminated string. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(dstbuf, (const wchar_t **)&src, 6, sizeof(dstbuf),
+ &s) == 5);
+ assert(strcmp(dstbuf, "hello") == 0);
+ assert((unsigned char)dstbuf[6] == 0xcc);
+ assert(src == NULL);
+
+ /* Simple null terminated string, stopping early. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(dstbuf, (const wchar_t **)&src, 4, sizeof(dstbuf),
+ &s) == 4);
+ assert(memcmp(dstbuf, "hell", 4) == 0);
+ assert((unsigned char)dstbuf[5] == 0xcc);
+ assert(src == srcbuf + 4);
+
+ /* Not enough space in destination buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(dstbuf, (const wchar_t **)&src, 6, 4,
+ &s) == 4);
+ assert(memcmp(dstbuf, "hell", 4) == 0);
+ assert((unsigned char)dstbuf[5] == 0xcc);
+ assert(src == srcbuf + 4);
+
+ /* Null terminated string, internal dest. buffer */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(NULL, (const wchar_t **)&src, 6, sizeof(dstbuf),
+ &s) == 5);
+
+ /* Null terminated string, internal dest. buffer, stopping early. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(NULL, (const wchar_t **)&src, 4, sizeof(dstbuf),
+ &s) == 4);
+
+ /* Null terminated string, internal state. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ assert(wcsnrtombs(dstbuf, (const wchar_t **)&src, 6, sizeof(dstbuf),
+ NULL) == 5);
+ assert(strcmp(dstbuf, "hello") == 0);
+ assert((unsigned char)dstbuf[6] == 0xcc);
+ assert(src == NULL);
+
+ /* Null terminated string, internal state, internal dest. buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ src = srcbuf;
+ assert(wcsnrtombs(NULL, (const wchar_t **)&src, 6, 0, NULL) == 5);
+
+ /* Empty source buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ srcbuf[0] = L'\0';
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(dstbuf, (const wchar_t **)&src, 1, sizeof(dstbuf),
+ &s) == 0);
+ assert(dstbuf[0] == L'\0');
+
+ /* Zero length destination buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(dstbuf, (const wchar_t **)&src, 6, 0, &s) == 0);
+ assert((unsigned char)dstbuf[0] == 0xcc);
+
+ /* Zero length source buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(dstbuf, (const wchar_t **)&src, 0, sizeof(dstbuf),
+ &s) == 0);
+ assert((unsigned char)dstbuf[0] == 0xcc);
+ assert(src == srcbuf);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ srcbuf[0] = 0xA3C1;
+ srcbuf[1] = 0x0020;
+ srcbuf[2] = 0x0042;
+ srcbuf[3] = 0x0020;
+ srcbuf[4] = 0xA3C3;
+ srcbuf[5] = 0x0000;
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(dstbuf, (const wchar_t **)&src, 6, sizeof(dstbuf),
+ &s) == 7);
+ assert(strcmp(dstbuf, "\xA3\xC1 B \xA3\xC3") == 0);
+ assert((unsigned char)dstbuf[8] == 0xcc);
+ assert(src == NULL);
+
+ /* Stopping early. */
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsnrtombs(dstbuf, (const wchar_t **)&src, 6, 6,
+ &s) == 5);
+ assert(memcmp(dstbuf, "\xA3\xC1 B ", 5) == 0);
+ assert((unsigned char)dstbuf[5] == 0xcc);
+ assert(src == srcbuf + 4);
+
+ printf("ok 1 - wcsnrtombs()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-wcsnrtombs.t b/tools/regression/lib/libc/locale/test-wcsnrtombs.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wcsnrtombs.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-wcsrtombs.c b/tools/regression/lib/libc/locale/test-wcsrtombs.c
new file mode 100644
index 0000000..48fe366
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wcsrtombs.c
@@ -0,0 +1,155 @@
+/*-
+ * Copyright (c) 2002 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for wcsrtombs(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1999.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ wchar_t srcbuf[128];
+ char dstbuf[128];
+ wchar_t *src;
+ mbstate_t s;
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ /* Simple null terminated string. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsrtombs(dstbuf, (const wchar_t **)&src, sizeof(dstbuf),
+ &s) == 5);
+ assert(strcmp(dstbuf, "hello") == 0);
+ assert((unsigned char)dstbuf[6] == 0xcc);
+ assert(src == NULL);
+
+ /* Not enough space in destination buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsrtombs(dstbuf, (const wchar_t **)&src, 4,
+ &s) == 4);
+ assert(memcmp(dstbuf, "hell", 4) == 0);
+ assert((unsigned char)dstbuf[5] == 0xcc);
+ assert(src == srcbuf + 4);
+
+ /* Null terminated string, internal dest. buffer */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsrtombs(NULL, (const wchar_t **)&src, sizeof(dstbuf),
+ &s) == 5);
+
+ /* Null terminated string, internal state. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ assert(wcsrtombs(dstbuf, (const wchar_t **)&src, sizeof(dstbuf),
+ NULL) == 5);
+ assert(strcmp(dstbuf, "hello") == 0);
+ assert((unsigned char)dstbuf[6] == 0xcc);
+ assert(src == NULL);
+
+ /* Null terminated string, internal state, internal dest. buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ src = srcbuf;
+ assert(wcsrtombs(NULL, (const wchar_t **)&src, 0, NULL) == 5);
+
+ /* Empty source buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ srcbuf[0] = L'\0';
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsrtombs(dstbuf, (const wchar_t **)&src, sizeof(dstbuf),
+ &s) == 0);
+ assert(dstbuf[0] == L'\0');
+
+ /* Zero length destination buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsrtombs(dstbuf, (const wchar_t **)&src, 0, &s) == 0);
+ assert((unsigned char)dstbuf[0] == 0xcc);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ srcbuf[0] = 0xA3C1;
+ srcbuf[1] = 0x0020;
+ srcbuf[2] = 0x0042;
+ srcbuf[3] = 0x0020;
+ srcbuf[4] = 0xA3C3;
+ srcbuf[5] = 0x0000;
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ src = srcbuf;
+ memset(&s, 0, sizeof(s));
+ assert(wcsrtombs(dstbuf, (const wchar_t **)&src, sizeof(dstbuf),
+ &s) == 7);
+ assert(strcmp(dstbuf, "\xA3\xC1 B \xA3\xC3") == 0);
+ assert((unsigned char)dstbuf[8] == 0xcc);
+ assert(src == NULL);
+
+ printf("ok 1 - wcsrtombs()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-wcsrtombs.t b/tools/regression/lib/libc/locale/test-wcsrtombs.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wcsrtombs.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-wcstombs.c b/tools/regression/lib/libc/locale/test-wcstombs.c
new file mode 100644
index 0000000..f4a5770
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wcstombs.c
@@ -0,0 +1,129 @@
+/*-
+ * Copyright (c) 2002 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for wcstombs(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1999.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main(int argc, char *argv[])
+{
+ wchar_t srcbuf[128];
+ char dstbuf[128];
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ /* Simple null terminated string. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ assert(wcstombs(dstbuf, srcbuf, sizeof(dstbuf)) == 5);
+ assert(strcmp(dstbuf, "hello") == 0);
+ assert((unsigned char)dstbuf[6] == 0xcc);
+
+ /* Not enough space in destination buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ assert(wcstombs(dstbuf, srcbuf, 4) == 4);
+ assert(memcmp(dstbuf, "hell", 4) == 0);
+ assert((unsigned char)dstbuf[5] == 0xcc);
+
+ /* Null terminated string, internal dest. buffer */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ assert(wcstombs(NULL, srcbuf, sizeof(dstbuf)) == 5);
+
+ /* Null terminated string, internal state. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ assert(wcstombs(dstbuf, srcbuf, sizeof(dstbuf)) == 5);
+ assert(strcmp(dstbuf, "hello") == 0);
+ assert((unsigned char)dstbuf[6] == 0xcc);
+
+ /* Null terminated string, internal state, internal dest. buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ assert(wcstombs(NULL, srcbuf, 0) == 5);
+
+ /* Empty source buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ srcbuf[0] = L'\0';
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ assert(wcstombs(dstbuf, srcbuf, sizeof(dstbuf)) == 0);
+ assert(dstbuf[0] == L'\0');
+
+ /* Zero length destination buffer. */
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ wcscpy(srcbuf, L"hello");
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ assert(wcstombs(dstbuf, srcbuf, 0) == 0);
+ assert((unsigned char)dstbuf[0] == 0xcc);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX > 1);
+
+ wmemset(srcbuf, 0xcc, sizeof(srcbuf) / sizeof(*srcbuf));
+ srcbuf[0] = 0xA3C1;
+ srcbuf[1] = 0x0020;
+ srcbuf[2] = 0x0042;
+ srcbuf[3] = 0x0020;
+ srcbuf[4] = 0xA3C3;
+ srcbuf[5] = 0x0000;
+ memset(dstbuf, 0xcc, sizeof(dstbuf));
+ assert(wcstombs(dstbuf, srcbuf, sizeof(dstbuf)) == 7);
+ assert(strcmp(dstbuf, "\xA3\xC1 B \xA3\xC3") == 0);
+ assert((unsigned char)dstbuf[8] == 0xcc);
+
+ printf("ok 1 - wcstombs()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-wcstombs.t b/tools/regression/lib/libc/locale/test-wcstombs.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wcstombs.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/locale/test-wctomb.c b/tools/regression/lib/libc/locale/test-wctomb.c
new file mode 100644
index 0000000..d55b3db
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wctomb.c
@@ -0,0 +1,112 @@
+/*-
+ * Copyright (c) 2002-2004 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for wctomb(), as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1999.
+ *
+ * The function is tested with both the "C" ("POSIX") LC_CTYPE setting and
+ * "ja_JP.eucJP". Other encodings are not tested.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+ size_t len;
+ char buf[MB_LEN_MAX + 1];
+
+ /*
+ * C/POSIX locale.
+ */
+
+ printf("1..1\n");
+
+ assert(MB_CUR_MAX == 1);
+
+ /* No shift states in C locale. */
+ assert(wctomb(NULL, L'\0') == 0);
+
+ /* Null wide character. */
+ memset(buf, 0xcc, sizeof(buf));
+ len = wctomb(buf, L'\0');
+ assert(len == 1);
+ assert((unsigned char)buf[0] == 0 && (unsigned char)buf[1] == 0xcc);
+
+ /* Latin letter A. */
+ memset(buf, 0xcc, sizeof(buf));
+ len = wctomb(buf, L'A');
+ assert(len == 1);
+ assert((unsigned char)buf[0] == 'A' && (unsigned char)buf[1] == 0xcc);
+
+ /* Invalid code. */
+ assert(wctomb(buf, UCHAR_MAX + 1) == -1);
+ assert(wctomb(NULL, 0) == 0);
+
+ /*
+ * Japanese (EUC) locale.
+ */
+
+ assert(strcmp(setlocale(LC_CTYPE, "ja_JP.eucJP"), "ja_JP.eucJP") == 0);
+ assert(MB_CUR_MAX == 3);
+
+ /* No shift states in EUC encoding. */
+ assert(wctomb(NULL, L'\0') == 0);
+
+ /* Null wide character. */
+ memset(buf, 0xcc, sizeof(buf));
+ len = wctomb(buf, L'\0');
+ assert(len == 1);
+ assert((unsigned char)buf[0] == 0 && (unsigned char)buf[1] == 0xcc);
+
+ /* Latin letter A. */
+ memset(buf, 0xcc, sizeof(buf));
+ len = wctomb(buf, L'A');
+ assert(len == 1);
+ assert((unsigned char)buf[0] == 'A' && (unsigned char)buf[1] == 0xcc);
+
+ /* Full width letter A. */
+ memset(buf, 0xcc, sizeof(buf));
+ len = wctomb(buf, 0xa3c1);
+ assert(len == 2);
+ assert((unsigned char)buf[0] == 0xa3 &&
+ (unsigned char)buf[1] == 0xc1 &&
+ (unsigned char)buf[2] == 0xcc);
+
+ printf("ok 1 - wctomb()\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/locale/test-wctomb.t b/tools/regression/lib/libc/locale/test-wctomb.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/locale/test-wctomb.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/net/Makefile b/tools/regression/lib/libc/net/Makefile
new file mode 100644
index 0000000..a61741b
--- /dev/null
+++ b/tools/regression/lib/libc/net/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+TESTS= test-ether test-eui64_aton test-eui64_line test-eui64_ntoa
+CFLAGS+= -g -Wall
+
+.PHONY: tests
+tests: ${TESTS}
+ for p in ${TESTS}; do ${.OBJDIR}/$$p; done
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/libc/net/test-ether.c b/tools/regression/lib/libc/net/test-ether.c
new file mode 100644
index 0000000..7408101
--- /dev/null
+++ b/tools/regression/lib/libc/net/test-ether.c
@@ -0,0 +1,235 @@
+/*-
+ * Copyright (c) 2007 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+
+#include <net/ethernet.h>
+
+#include <stdio.h>
+#include <string.h>
+
+static int testnum;
+
+#define OK() do { \
+ printf("ok %d %s\n", testnum, __func__); \
+ return; \
+} while (0)
+
+#define NOTOK(why) do { \
+ printf("not ok %d %s # %s\n", testnum, __func__, why); \
+ return; \
+} while (0)
+
+#define TODO() NOTOK("TODO")
+
+static const char *ether_line_string =
+ "01:23:45:67:89:ab ether_line_hostname";
+static const char *ether_line_hostname = "ether_line_hostname";
+static const struct ether_addr ether_line_addr = {
+ { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab }
+};
+
+static void
+test_ether_line(void)
+{
+ struct ether_addr e;
+ char hostname[256];
+
+ testnum++;
+ if (ether_line(ether_line_string, &e, hostname) != 0)
+ NOTOK("returned error");
+ if (bcmp(&e, &ether_line_addr, ETHER_ADDR_LEN) != 0)
+ NOTOK("bad address");
+ if (strcmp(hostname, ether_line_hostname) != 0) {
+ printf("hostname: %s\n", hostname);
+ NOTOK("bad hostname");
+ }
+ OK();
+}
+
+static const char *ether_line_bad_1_string = "x";
+
+static void
+test_ether_line_bad_1(void)
+{
+ struct ether_addr e;
+ char hostname[256];
+
+ testnum++;
+ if (ether_line(ether_line_bad_1_string, &e, hostname) == 0)
+ NOTOK("returned success");
+ OK();
+}
+
+static const char *ether_line_bad_2_string = "x x";
+
+static void
+test_ether_line_bad_2(void)
+{
+ struct ether_addr e;
+ char hostname[256];
+
+ testnum++;
+ if (ether_line(ether_line_bad_2_string, &e, hostname) == 0)
+ NOTOK("returned success");
+ OK();
+}
+
+static const char *ether_aton_string = "01:23:45:67:89:ab";
+static const struct ether_addr ether_aton_addr = {
+ { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab }
+};
+
+static void
+test_ether_aton_r(void)
+{
+ struct ether_addr e, *ep;
+
+ testnum++;
+ ep = ether_aton_r(ether_aton_string, &e);
+ if (ep == NULL)
+ NOTOK("returned NULL");
+ if (ep != &e)
+ NOTOK("returned different pointer");
+ if (bcmp(&e, &ether_aton_addr, ETHER_ADDR_LEN) != 0)
+ NOTOK("bad address");
+ OK();
+}
+
+static const char *ether_aton_bad_string = "x";
+
+static void
+test_ether_aton_r_bad(void)
+{
+ struct ether_addr e, *ep;
+
+ testnum++;
+ ep = ether_aton_r(ether_aton_bad_string, &e);
+ if (ep == &e)
+ NOTOK("returned success");
+ if (ep != NULL)
+ NOTOK("returned different pointer");
+ OK();
+}
+
+static void
+test_ether_aton(void)
+{
+ struct ether_addr *ep;
+
+ testnum++;
+ ep = ether_aton(ether_aton_string);
+ if (ep == NULL)
+ NOTOK("returned NULL");
+ if (bcmp(ep, &ether_aton_addr, ETHER_ADDR_LEN) != 0)
+ NOTOK("bad address");
+ OK();
+}
+
+static void
+test_ether_aton_bad(void)
+{
+ struct ether_addr *ep;
+
+ testnum++;
+ ep = ether_aton(ether_aton_bad_string);
+ if (ep != NULL)
+ NOTOK("returned success");
+ OK();
+}
+
+static const char *ether_ntoa_string = "01:23:45:67:89:ab";
+static const struct ether_addr ether_ntoa_addr = {
+ { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab }
+};
+
+static void
+test_ether_ntoa_r(void)
+{
+ char buf[256], *cp;
+
+ testnum++;
+ cp = ether_ntoa_r(&ether_ntoa_addr, buf);
+ if (cp == NULL)
+ NOTOK("returned NULL");
+ if (cp != buf)
+ NOTOK("returned different pointer");
+ if (strcmp(cp, ether_ntoa_string) != 0)
+ NOTOK("bad string");
+ OK();
+}
+
+static void
+test_ether_ntoa(void)
+{
+ char *cp;
+
+ testnum++;
+ cp = ether_ntoa(&ether_ntoa_addr);
+ if (cp == NULL)
+ NOTOK("returned NULL");
+ if (strcmp(cp, ether_ntoa_string) != 0)
+ NOTOK("bad string");
+ OK();
+}
+
+static void
+test_ether_ntohost(void)
+{
+
+ testnum++;
+ TODO();
+}
+
+static void
+test_ether_hostton(void)
+{
+
+ testnum++;
+ TODO();
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ printf("1..11\n");
+
+ test_ether_line();
+ test_ether_line_bad_1();
+ test_ether_line_bad_2();
+ test_ether_aton_r();
+ test_ether_aton_r_bad();
+ test_ether_aton();
+ test_ether_aton_bad();
+ test_ether_ntoa_r();
+ test_ether_ntoa();
+ test_ether_ntohost();
+ test_ether_hostton();
+ return (0);
+}
diff --git a/tools/regression/lib/libc/net/test-ether.t b/tools/regression/lib/libc/net/test-ether.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/net/test-ether.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/net/test-eui64.h b/tools/regression/lib/libc/net/test-eui64.h
new file mode 100644
index 0000000..ea82a10
--- /dev/null
+++ b/tools/regression/lib/libc/net/test-eui64.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2004 The Aerospace Corporation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions, and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of The Aerospace Corporation may not be used to endorse or
+ * promote products derived from this software.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AEROSPACE CORPORATION "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AEROSPACE CORPORATION BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+#ifndef _TEST_EUI64_H
+#define _TEST_EUI64_H
+
+struct eui64 test_eui64_id = {{0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77}};
+struct eui64 test_eui64_eui48 = {{0x00,0x11,0x22,0xFF,0xFE,0x33,0x44,0x55}};
+struct eui64 test_eui64_mac48 = {{0x00,0x11,0x22,0xFF,0xFF,0x33,0x44,0x55}};
+
+#define test_eui64_id_ascii "00-11-22-33-44-55-66-77"
+#define test_eui64_id_colon_ascii "00:11:22:33:44:55:66:77"
+#define test_eui64_hex_ascii "0x0011223344556677"
+#define test_eui64_eui48_ascii "00-11-22-ff-fe-33-44-55"
+#define test_eui64_mac48_ascii "00-11-22-ff-fe-33-44-55"
+#define test_eui64_mac_ascii "00-11-22-33-44-55"
+#define test_eui64_mac_colon_ascii "00:11:22:33:44:55"
+#define test_eui64_id_host "id"
+#define test_eui64_eui48_host "eui-48"
+#define test_eui64_mac48_host "mac-48"
+
+#define test_eui64_line_id "00-11-22-33-44-55-66-77 id"
+#define test_eui64_line_id_colon "00:11:22:33:44:55:66:77 id"
+#define test_eui64_line_eui48 "00-11-22-FF-fe-33-44-55 eui-48"
+#define test_eui64_line_mac48 "00-11-22-FF-ff-33-44-55 mac-48"
+#define test_eui64_line_eui48_6byte "00-11-22-33-44-55 eui-48"
+#define test_eui64_line_eui48_6byte_c "00:11:22:33:44:55 eui-48"
+
+#endif /* !_TEST_EUI64_H */
diff --git a/tools/regression/lib/libc/net/test-eui64_aton.c b/tools/regression/lib/libc/net/test-eui64_aton.c
new file mode 100644
index 0000000..e10f985
--- /dev/null
+++ b/tools/regression/lib/libc/net/test-eui64_aton.c
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004 The Aerospace Corporation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions, and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of The Aerospace Corporation may not be used to endorse or
+ * promote products derived from this software.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AEROSPACE CORPORATION "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AEROSPACE CORPORATION BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/eui64.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "test-eui64.h"
+
+static int
+test_str( const char *str, const struct eui64 *eui)
+{
+ struct eui64 e;
+ char buf[EUI64_SIZ];
+ static int test = 0;
+
+ test++;
+
+ if (eui64_aton(str, &e) != 0 &&
+ memcmp(&e, &eui, sizeof(struct eui64)) != 0) {
+ printf("not ok %d - : eui64_aton(%s)\n", test, str);
+ eui64_ntoa(&e, buf, sizeof(buf));
+ printf("# got: %s\n", buf);
+ return (0);
+ } else {
+ printf("ok %d - eui64_aton(%s)\n", test, str);
+ return (1);
+ }
+
+}
+
+int
+main(int argc, char **argv)
+{
+
+ printf("1..5\n");
+
+ test_str(test_eui64_id_ascii, &test_eui64_id);
+ test_str(test_eui64_id_colon_ascii, &test_eui64_id);
+ test_str(test_eui64_mac_ascii, &test_eui64_eui48);
+ test_str(test_eui64_mac_colon_ascii, &test_eui64_eui48);
+ test_str(test_eui64_hex_ascii, &test_eui64_id);
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/net/test-eui64_aton.t b/tools/regression/lib/libc/net/test-eui64_aton.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/net/test-eui64_aton.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/net/test-eui64_line.c b/tools/regression/lib/libc/net/test-eui64_line.c
new file mode 100644
index 0000000..714b460
--- /dev/null
+++ b/tools/regression/lib/libc/net/test-eui64_line.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2004 The Aerospace Corporation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions, and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of The Aerospace Corporation may not be used to endorse or
+ * promote products derived from this software.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AEROSPACE CORPORATION "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AEROSPACE CORPORATION BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/eui64.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "test-eui64.h"
+
+static int
+test_line(const char *line, const struct eui64 *eui, const char *host)
+{
+ struct eui64 e;
+ char buf[256];
+ static int test = 0;
+
+ test++;
+
+ if (eui64_line(line, &e, buf, sizeof(buf)) != 0 ||
+ memcmp(&e, eui, sizeof(struct eui64)) != 0 ||
+ strcmp(buf, host) != 0) {
+ printf("not ok %d - eui64_line(\"%s\")\n", test, line);
+ printf("# host = %s\n", buf);
+ eui64_ntoa(&e, buf, sizeof(buf));
+ printf("# e = %s\n", buf);
+ return (0);
+ } else {
+ printf("ok %d - eui64_line(\"%s\")\n", test, line);
+ return (1);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+
+ printf("1..6\n");
+
+ test_line(test_eui64_line_id, &test_eui64_id,
+ test_eui64_id_host);
+ test_line(test_eui64_line_id_colon, &test_eui64_id,
+ test_eui64_id_host);
+ test_line(test_eui64_line_eui48, &test_eui64_eui48,
+ test_eui64_eui48_host);
+ test_line(test_eui64_line_mac48, &test_eui64_mac48,
+ test_eui64_mac48_host);
+ test_line(test_eui64_line_eui48_6byte, &test_eui64_eui48,
+ test_eui64_eui48_host);
+ test_line(test_eui64_line_eui48_6byte_c, &test_eui64_eui48,
+ test_eui64_eui48_host);
+
+ return (0);
+}
diff --git a/tools/regression/lib/libc/net/test-eui64_line.t b/tools/regression/lib/libc/net/test-eui64_line.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/net/test-eui64_line.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/net/test-eui64_ntoa.c b/tools/regression/lib/libc/net/test-eui64_ntoa.c
new file mode 100644
index 0000000..f7582f0
--- /dev/null
+++ b/tools/regression/lib/libc/net/test-eui64_ntoa.c
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2004 The Aerospace Corporation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions, and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of The Aerospace Corporation may not be used to endorse or
+ * promote products derived from this software.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AEROSPACE CORPORATION "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AEROSPACE CORPORATION BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/eui64.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "test-eui64.h"
+
+int
+main(int argc, char **argv)
+{
+ char a[EUI64_SIZ];
+
+ printf("1..1\n");
+
+ if (eui64_ntoa(&test_eui64_id, a, sizeof(a)) == 0 &&
+ strcmp(a, test_eui64_id_ascii) == 0) {
+ printf("ok 1 - eui64_ntoa\n");
+ return (0);
+ }
+ printf("# a = '%s'\n", a);
+
+ printf("not ok 1 - eui64_ntoa\n");
+ return (0);
+}
diff --git a/tools/regression/lib/libc/net/test-eui64_ntoa.t b/tools/regression/lib/libc/net/test-eui64_ntoa.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/net/test-eui64_ntoa.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/nss/Makefile b/tools/regression/lib/libc/nss/Makefile
new file mode 100644
index 0000000..8c8a514
--- /dev/null
+++ b/tools/regression/lib/libc/nss/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+TESTS= test-getaddr test-getgr test-gethostby test-getpw test-getproto\
+ test-getrpc test-getserv test-getusershell
+CFLAGS+= -g -Wall
+
+.PHONY: tests
+tests: ${TESTS}
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/libc/nss/README b/tools/regression/lib/libc/nss/README
new file mode 100644
index 0000000..ba0373d
--- /dev/null
+++ b/tools/regression/lib/libc/nss/README
@@ -0,0 +1,203 @@
+$FreeBSD$
+
+A brief how-to
+--------------
+
+Each nsswitch regression test does 2 kinds of actions:
+1. It runs a series of queries and tests the correctness of results.
+ There are 2 basic criterias which are used for that:
+ - numbers must be in the correct range
+ - certain pointers should not be NULL
+
+2. It makes a snapshot of the results of all queries that were made.
+ The idea of snapshots is to test that nsswitch-related function
+ calls behave equally (i.e. return same results for the same queries)
+ between system upgrades. When the test is executed and the snapshot is
+ already created, the test will compare the result of each query with
+ the appropriate result from the snapshot and will signal if they
+ differ.
+
+In order for nsswitch tests to be as useful as possible you should use
+them in the following way:
+
+Step 1 (before upgrading your system).
+Build the tests with "make" command and execute them with "prove -v"
+command. If there are errors during the execution, then appropriate
+nsswitch functions should be checked. Note, that errors on this state
+can happen only if the particular function return incorrect data.
+
+After the stage 1 a number of "snapshot_[test name]" files will appear
+in your test folder.
+
+Step 2 (after upgrading you system).
+Rebuild the tests with "make clean; make" command and execute them
+again with "prove -v" (check that "snapshot_[test name]" files
+are in the same folder with tests). On this stage regression tests
+will catch not only the correctness errors, but will also determine
+the changes in nsswitch functions behaviour.
+
+In case of the test failure you will get the following message:
+
+To get more details about the error you should do the following:
+Step 1. Run the test alone with debug output enabled.
+Step 2. Mail the snapshot file and the debug test output to the
+freebsd-current@ mailing list.
+
+Example testing session for getpwXXX() family of functions
+----------------------------------------------------------
+1. make
+
+2. prove -v ./test-getpw.t
+
+ test-getpw....1..8
+ ok 1 - getpwnam()
+ ok 2 - getpwuid()
+ ok 3 - getpwent()
+ ok 4 - getpwent() 2-pass
+ ok 5 - building snapshot, if needed
+ ok 6 - getpwnam() snapshot
+ ok 7 - getpwuid() snapshot
+ ok 8 - getpwent() snapshot
+ ok
+ All tests successful.
+ Files=1, Tests=8, 1 wallclock secs ( 0.00 cusr + 0.20 csys = 0.20 CPU)
+
+
+3. Upgrading the system.
+
+4. make clean; make
+
+5. prove -v ./test-getpw.t (suppose that something has gone wrong)
+
+ test-getpw....1..8
+ ok 1 - getpwnam()
+ ok 2 - getpwuid()
+ ok 3 - getpwent()
+ ok 4 - getpwent() 2-pass
+ ok 5 - building snapshot, if needed
+ not ok 6 - getpwnam() snapshot
+ ok 7 - getpwuid() snapshot
+ not ok 8 - getpwent() snapshot
+ FAILED tests 6, 8
+ Failed 2/8 tests, 75.00% okay
+ Failed 1/1 test scripts, 0.00% okay. 2/8 subtests failed, 75.00% okay.
+
+6. We see that test number 6 failed. According to get-getpw.t, this test
+ is executed like this:
+ do_test 6 'getpwnam() snapshot' '-n -s snapshot_pwd'
+
+ To determine why the test has failed, we need to run it in debug mode -
+ it means adding "-d" to the options list.
+
+7. ./test-getpw -dn -s snapshot_pwd
+ ...
+ testing getpwnam() with the following data:
+ toor:*:0:0:0::ne-again Superuser:/root::0:4831
+ testing correctness with the following data:
+ toor:*:0:0:0::Bourne-again Superuser:/root::0:4831
+ correct
+ not ok
+
+8. Here we can see that the data from snapshot (first "toor" line) and
+ the data received from the getpwnam() call (second "toor" line) are
+ different. It is the reason why the test has failed. If you can't
+ (or don't want) to investigate the problem by yourself, mail
+ the test debug output and the snapshot file to the developers list.
+
+Notes on using standalone nsswitch tests
+----------------------------------------
+
+All nsswitch tests have [-d] optional command line argument which enables
+debug output. The debug output can be extremely helpful to determine the
+cause of test failure.
+
+In all nsswitch tests -s <file> command line argument specifies the
+snapshot file. If this file doesn't exist, it would be built during
+test execution. If it already exists then it will be used to check
+the results of particular function calls. This argument is mostly
+optional, but some tests (test-getaddr and test-getusershell) force
+it to be specified.
+
+test-gethostby and test-getaddr require the list of hostnames, that should
+be queried during the test. This list must be specified via -f <file>
+command line argument. Each hostname should occupy exactly one line
+in the file.
+
+Detailed tests description
+--------------------------
+
+./test-getaddr - tests the getaddrinfo() function.
+ Usage: test-getaddr [-d] [-46] [-s <file>] -f <file>
+ -d - enable debug output
+ -4 - force IPv4 usage
+ -6 - force IPv6 usage
+ -s - build/use specified snapshot file
+ -f - use specified hostnames list for testing
+
+./test-getgr
+ Usage: test-getgr -nge2 [-d] [-s <file>]
+ -d - enable debug output
+ -n - test getgrnam(3)
+ -g - test getgrgid(3)
+ -e - test getgrent(3)
+ -2 - test getgrent(3) in 2-pass mode
+ -s - build/use specified snapshot file
+
+./test-gethostby
+ Usage: test-gethostby -na2i [-o] [-d] [-m46] [-s <file>] -f <file>
+ -n - test gethostbyname2(3)
+ -a - test gethostbyaddr(3)
+ -2 - test gethostbyname2(3) results to be equal with getaddrinfo(3)
+ results for the similar query
+ -i - test gethostbyaddr(3) results to be equal with getnameinfo(3)
+ results for the similar query
+ -o - use getipnodebyname(3)/getipnodebyaddr(3) for testing instead of
+ gethostbyname2(3)/gethostbyaddr(3)
+ -d - enable debug output
+ -m - force IPv4-to-IPv6 mapping
+ -4 - force IPv4 usage
+ -6 - force IPv6 usage
+ -s - build/use specified snapshot file
+ -f - use specified hostnames list for testing
+
+./test-getproto
+ Usage: test-getproto -nve2 [-d] [-s <file>]
+ -d - enable debug output
+ -n - test getprotobyname(3)
+ -v - test getprotobynumber(3)
+ -e - test getprotoent(3)
+ -2 - test getprotoent(3) in 2-pass mode
+ -s - build/use specified snapshot file
+
+./test-getpw
+ Usage: test-getpw -nue2 [-d] [-s <file>]
+ -d - enable debug output
+ -n - test getpwnam(3)
+ -u - test getpwuid(3)
+ -e - test getpwent(3)
+ -2 - test getpwent(3) in 2-pass mode
+ -s - build/use snapshot file
+
+./test-getrpc
+ Usage: test-getrpc -nve2 [-d] [-s <file>]
+ -d - enable debug output
+ -n - test getrpcbyname(3)
+ -v - test getrpcbynumber(3)
+ -e - test getrpcent(3)
+ -2 - test getrpcent(3) in 2-pass mode
+ -s - build/use specified snapshot file
+
+./test-getserv
+ Usage: test-getserv -npe2 [-d] [-s <file>]
+ -d - enable debug output
+ -n - test getservbyname(3)
+ -p - test getservbyport(3)
+ -e - test getservent(3)
+ -2 - test getservent(3) in 2-pass mode
+ -s - build/use specified snapshot file
+
+./test-getusershell
+ Usage: test-getusershell [-d] -s <file>
+ -d - enable debug output
+ -s - build/use specified snapshot file
+
diff --git a/tools/regression/lib/libc/nss/mach b/tools/regression/lib/libc/nss/mach
new file mode 100644
index 0000000..d25d8d6
--- /dev/null
+++ b/tools/regression/lib/libc/nss/mach
@@ -0,0 +1,94 @@
+# $FreeBSD$
+localhost
+above.warped.net
+anoncvs.cirr.com
+anoncvs.isc.netbsd.org
+anoncvs.leo.org
+anoncvs.netbsd.lt
+anoncvs.netbsd.ro
+anoncvs.netbsd.se
+antioche.antioche.eu.org
+boulder.tele.dk
+centaurus.4web.cz
+chur.math.ntnu.no
+cnftp.bjpu.edu.cn
+console.netbsd.org
+cvs.fi.netbsd.org
+cvs.mikrolahti.fi
+cvs.netbsd.org
+cvsup-netbsd.leo.org
+cvsup.netbsd.se
+cvsup.pasta.cs.uit.no
+ftp.bitcon.no
+ftp.chg.ru
+ftp.duth.gr
+ftp.estpak.ee
+ftp.fsn.hu
+ftp.funet.fi
+ftp.grondar.za
+ftp.leo.org
+ftp.netbsd.lt
+ftp.netbsd.org
+ftp.nluug.nl
+ftp.plig.org
+ftp.uni-erlangen.de
+ftp.xgate.co.kr
+gd.tuwien.ac.at
+gort.ludd.luth.se
+grappa.unix-ag.uni-kl.de
+info.wins.uva.nl
+irc.warped.net
+knug.youn.co.kr
+lala.iri.co.jp
+mail.jp.netbsd.org
+mail.kr.netbsd.org
+mail.netbsd.org
+melanoma.cs.rmit.edu.au
+mirror.aarnet.edu.au
+mirror.netbsd.com.br
+mirror03.inet.tele.dk
+moon.vub.ac.be
+nbwww.sergei.cc
+net.bsd.cz
+netbsd.3miasto.net
+netbsd.4ka.mipt.ru
+netbsd.apk.od.ua
+netbsd.csie.nctu.edu.tw
+netbsd.enderunix.org
+netbsd.ftp.fu-berlin.de
+netbsd.netlead.com.au
+netbsd.nsysu.edu.tw
+netbsd.pair.com
+netbsd.stevens-tech.edu
+netbsd.triada.bg
+netbsd.unix.net.nz
+netbsd.unixtech.be
+netbsd.vejas.lt
+netbsd.wagener-consulting.lu
+netbsd.zarco.org
+netbsdiso.interoute.net.uk
+netbsdwww.bitcon.no
+netbsdwww.cordef.com.pl
+netbsdwww.cs.rmit.edu.au
+netbsdwww.interoute.net.uk
+news.gw.com
+ns.netbsd.org
+pigu.iri.co.jp
+pluto.cdpa.nsysu.edu.tw
+projects.slowass.net
+server6.pasta.cs.uit.no
+skeleton.phys.spbu.ru
+snoopy.allbsd.org
+spike.allbsd.org
+sundry.netbsd.org
+tanya.sergei.cc
+web-a.fi.gw.com
+web-a.us.gw.com
+web.netbsd.mirror.arhea.net
+www.en.netbsd.de
+www.netbsd.cl
+www.netbsd.nl
+www.netbsd.org
+www.netbsd.ro
+zathras.netbsd.org
+zeppo.rediris.es
diff --git a/tools/regression/lib/libc/nss/test-getaddr.c b/tools/regression/lib/libc/nss/test-getaddr.c
new file mode 100644
index 0000000..046d9db
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getaddr.c
@@ -0,0 +1,538 @@
+/*-
+ * Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
+ * All rights rehted.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <arpa/inet.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <assert.h>
+#include <errno.h>
+#include <netdb.h>
+#include <resolv.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stringlist.h>
+#include <unistd.h>
+#include "testutil.h"
+
+enum test_methods {
+ TEST_GETADDRINFO,
+ TEST_BUILD_SNAPSHOT
+};
+
+static int debug = 0;
+static struct addrinfo hints;
+static enum test_methods method = TEST_GETADDRINFO;
+
+DECLARE_TEST_DATA(addrinfo)
+DECLARE_TEST_FILE_SNAPSHOT(addrinfo)
+DECLARE_2PASS_TEST(addrinfo)
+
+static void clone_addrinfo(struct addrinfo *, struct addrinfo const *);
+static int compare_addrinfo(struct addrinfo *, struct addrinfo *, void *);
+static void dump_addrinfo(struct addrinfo *);
+static void free_addrinfo(struct addrinfo *);
+
+static void sdump_addrinfo(struct addrinfo *, char *, size_t);
+
+IMPLEMENT_TEST_DATA(addrinfo)
+IMPLEMENT_TEST_FILE_SNAPSHOT(addrinfo)
+IMPLEMENT_2PASS_TEST(addrinfo)
+
+static void
+clone_addrinfo(struct addrinfo *dest, struct addrinfo const *src)
+{
+ assert(dest != NULL);
+ assert(src != NULL);
+
+ memcpy(dest, src, sizeof(struct addrinfo));
+ if (src->ai_canonname != NULL)
+ dest->ai_canonname = strdup(src->ai_canonname);
+
+ if (src->ai_addr != NULL) {
+ dest->ai_addr = (struct sockaddr *)malloc(src->ai_addrlen);
+ assert(dest->ai_addr != NULL);
+ memcpy(dest->ai_addr, src->ai_addr, src->ai_addrlen);
+ }
+
+ if (src->ai_next != NULL) {
+ dest->ai_next = (struct addrinfo *)malloc(
+ sizeof(struct addrinfo));
+ assert(dest->ai_next != NULL);
+ clone_addrinfo(dest->ai_next, src->ai_next);
+ }
+}
+
+static int
+compare_addrinfo_(struct addrinfo *ai1, struct addrinfo *ai2)
+{
+ if ((ai1 == NULL) || (ai2 == NULL))
+ return (-1);
+
+ if ((ai1->ai_flags != ai2->ai_flags) ||
+ (ai1->ai_family != ai2->ai_family) ||
+ (ai1->ai_socktype != ai2->ai_socktype) ||
+ (ai1->ai_protocol != ai2->ai_protocol) ||
+ (ai1->ai_addrlen != ai2->ai_addrlen) ||
+ (((ai1->ai_addr == NULL) || (ai2->ai_addr == NULL)) &&
+ (ai1->ai_addr != ai2->ai_addr)) ||
+ (((ai1->ai_canonname == NULL) || (ai2->ai_canonname == NULL)) &&
+ (ai1->ai_canonname != ai2->ai_canonname)))
+ return (-1);
+
+ if ((ai1->ai_canonname != NULL) &&
+ (strcmp(ai1->ai_canonname, ai2->ai_canonname) != 0))
+ return (-1);
+
+ if ((ai1->ai_addr != NULL) &&
+ (memcmp(ai1->ai_addr, ai2->ai_addr, ai1->ai_addrlen) != 0))
+ return (-1);
+
+ if ((ai1->ai_next == NULL) && (ai2->ai_next == NULL))
+ return (0);
+ else
+ return (compare_addrinfo_(ai1->ai_next, ai2->ai_next));
+}
+
+static int
+compare_addrinfo(struct addrinfo *ai1, struct addrinfo *ai2, void *mdata)
+{
+ int rv;
+
+ if (debug) {
+ printf("testing equality of 2 addrinfo structures\n");
+ }
+
+ rv = compare_addrinfo_(ai1, ai2);
+
+ if (debug) {
+ if (rv == 0)
+ printf("equal\n");
+ else {
+ dump_addrinfo(ai1);
+ dump_addrinfo(ai2);
+ printf("not equal\n");
+ }
+ }
+
+ return (rv);
+}
+
+void
+free_addrinfo(struct addrinfo *ai)
+{
+ if (ai == NULL)
+ return;
+
+ free(ai->ai_addr);
+ free(ai->ai_canonname);
+ free_addrinfo(ai->ai_next);
+}
+
+void
+sdump_addrinfo(struct addrinfo *ai, char *buffer, size_t buflen)
+{
+ int written, i;
+
+ written = snprintf(buffer, buflen, "%d %d %d %d %d ",
+ ai->ai_flags, ai->ai_family, ai->ai_socktype, ai->ai_protocol,
+ ai->ai_addrlen);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ written = snprintf(buffer, buflen, "%s ",
+ ai->ai_canonname == NULL ? "(null)" : ai->ai_canonname);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (ai->ai_addr == NULL) {
+ written = snprintf(buffer, buflen, "(null)");
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+ } else {
+ for (i = 0; i < ai->ai_addrlen; ++i ) {
+ written = snprintf(buffer, buflen,
+ i + 1 != ai->ai_addrlen ? "%d." : "%d",
+ ((unsigned char *)ai->ai_addr)[i]);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (buflen == 0)
+ return;
+ }
+ }
+
+ if (ai->ai_next != NULL) {
+ written = snprintf(buffer, buflen, ":");
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ sdump_addrinfo(ai->ai_next, buffer, buflen);
+ }
+}
+
+void
+dump_addrinfo(struct addrinfo *result)
+{
+ if (result != NULL) {
+ char buffer[2048];
+ sdump_addrinfo(result, buffer, sizeof(buffer));
+ printf("%s\n", buffer);
+ } else
+ printf("(null)\n");
+}
+
+static int
+addrinfo_read_snapshot_addr(char *addr, unsigned char *result, size_t len)
+{
+ char *s, *ps, *ts;
+
+ ps = addr;
+ while ( (s = strsep(&ps, ".")) != NULL) {
+ if (len == 0)
+ return (-1);
+
+ *result = (unsigned char)strtol(s, &ts, 10);
+ ++result;
+ if (*ts != '\0')
+ return (-1);
+
+ --len;
+ }
+ if (len != 0)
+ return (-1);
+ else
+ return (0);
+}
+
+static int
+addrinfo_read_snapshot_ai(struct addrinfo *ai, char *line)
+{
+ char *s, *ps, *ts;
+ int i, rv, *pi;
+
+ rv = 0;
+ i = 0;
+ ps = line;
+ memset(ai, 0, sizeof(struct addrinfo));
+ while ( (s = strsep(&ps, " ")) != NULL) {
+ switch (i) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ pi = &ai->ai_flags + i;
+ *pi = (int)strtol(s, &ts, 10);
+ if (*ts != '\0')
+ goto fin;
+ break;
+ case 4:
+ ai->ai_addrlen = (socklen_t)strtol(s, &ts, 10);
+ if (*ts != '\0')
+ goto fin;
+ break;
+ case 5:
+ if (strcmp(s, "(null)") != 0) {
+ ai->ai_canonname = strdup(s);
+ assert(ai->ai_canonname != NULL);
+ }
+ break;
+ case 6:
+ if (strcmp(s, "(null)") != 0) {
+ ai->ai_addr = (struct sockaddr *)malloc(
+ ai->ai_addrlen);
+ assert(ai->ai_addr != NULL);
+ memset(ai->ai_addr, 0, ai->ai_addrlen);
+ rv = addrinfo_read_snapshot_addr(s,
+ (unsigned char *)ai->ai_addr,
+ ai->ai_addrlen);
+
+ if (rv != 0)
+ goto fin;
+ }
+ break;
+ default:
+ /* NOTE: should not be reachable */
+ rv = -1;
+ goto fin;
+ };
+
+ ++i;
+ }
+
+fin:
+ if ((i != 7) || (rv != 0)) {
+ free_addrinfo(ai);
+ memset(ai, 0, sizeof(struct addrinfo));
+ return (-1);
+ }
+
+ return (0);
+}
+
+static int
+addrinfo_read_snapshot_func(struct addrinfo *ai, char *line)
+{
+ struct addrinfo *ai2;
+ char *s, *ps;
+ int i, rv;
+
+ if (debug)
+ printf("1 line read from snapshot:\n%s\n", line);
+
+ rv = 0;
+ i = 0;
+ ps = line;
+
+ s = strsep(&ps, ":");
+ if (s == NULL)
+ return (-1);
+
+ rv = addrinfo_read_snapshot_ai(ai, s);
+ if (rv != 0)
+ return (-1);
+
+ ai2 = ai;
+ while ( (s = strsep(&ps, ":")) != NULL) {
+ ai2->ai_next = (struct addrinfo *)malloc(
+ sizeof(struct addrinfo));
+ assert(ai2->ai_next != NULL);
+ memset(ai2->ai_next, 0, sizeof(struct addrinfo));
+
+ rv = addrinfo_read_snapshot_ai(ai2->ai_next, s);
+ if (rv != 0) {
+ free_addrinfo(ai);
+ return (-1);
+ }
+
+ ai2 = ai2->ai_next;
+ }
+
+ return (0);
+}
+
+static int
+addrinfo_test_correctness(struct addrinfo *ai, void *mdata)
+{
+ if (debug) {
+ printf("testing correctness with the following data:\n");
+ dump_addrinfo(ai);
+ }
+
+ if (ai == NULL)
+ goto errfin;
+
+ if (!((ai->ai_family >= 0) && (ai->ai_family < AF_MAX)))
+ goto errfin;
+
+ if ((ai->ai_socktype != 0) && (ai->ai_socktype != SOCK_STREAM) &&
+ (ai->ai_socktype != SOCK_DGRAM) && (ai->ai_socktype != SOCK_RAW))
+ goto errfin;
+
+ if ((ai->ai_protocol != 0) && (ai->ai_protocol != IPPROTO_UDP) &&
+ (ai->ai_protocol != IPPROTO_TCP))
+ goto errfin;
+
+ if ((ai->ai_flags & ~(AI_CANONNAME | AI_NUMERICHOST | AI_PASSIVE)) != 0)
+ goto errfin;
+
+ if ((ai->ai_addrlen != ai->ai_addr->sa_len) ||
+ (ai->ai_family != ai->ai_addr->sa_family))
+ goto errfin;
+
+ if (debug)
+ printf("correct\n");
+
+ return (0);
+errfin:
+ if (debug)
+ printf("incorrect\n");
+
+ return (-1);
+}
+
+static int
+addrinfo_read_hostlist_func(struct addrinfo *ai, char *line)
+{
+ struct addrinfo *result;
+ int rv;
+
+ if (debug)
+ printf("resolving %s: ", line);
+ rv = getaddrinfo(line, NULL, &hints, &result);
+ if (rv == 0) {
+ if (debug)
+ printf("found\n");
+
+ rv = addrinfo_test_correctness(result, NULL);
+ if (rv != 0) {
+ freeaddrinfo(result);
+ return (rv);
+ }
+
+ clone_addrinfo(ai, result);
+ freeaddrinfo(result);
+ } else {
+ if (debug)
+ printf("not found\n");
+
+ memset(ai, 0, sizeof(struct addrinfo));
+ }
+ return (0);
+}
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr,
+ "Usage: %s [-d] [-46] [-s <file]> -f <file>\n",
+ getprogname());
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct addrinfo_test_data td, td_snap;
+ char *snapshot_file, *hostlist_file;
+ int rv;
+ int c;
+
+ if (argc < 2)
+ usage();
+
+ snapshot_file = NULL;
+ hostlist_file = NULL;
+ memset(&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = PF_UNSPEC;
+ hints.ai_flags = AI_CANONNAME;
+ while ((c = getopt(argc, argv, "46dns:f:")) != -1)
+ switch (c) {
+ case '4':
+ hints.ai_family = PF_INET;
+ case '6':
+ hints.ai_family = PF_INET6;
+ break;
+ case 'd':
+ debug = 1;
+ break;
+ case 's':
+ snapshot_file = strdup(optarg);
+ method = TEST_BUILD_SNAPSHOT;
+ break;
+ case 'f':
+ hostlist_file = strdup(optarg);
+ break;
+ default:
+ usage();
+ }
+
+ TEST_DATA_INIT(addrinfo, &td, clone_addrinfo, free_addrinfo);
+ TEST_DATA_INIT(addrinfo, &td_snap, clone_addrinfo, free_addrinfo);
+
+ if (hostlist_file == NULL)
+ usage();
+
+ if (access(hostlist_file, R_OK) != 0) {
+ if (debug)
+ printf("can't access the hostlist file %s\n",
+ hostlist_file);
+
+ usage();
+ }
+
+ if (debug)
+ printf("building host lists from %s\n", hostlist_file);
+
+ rv = TEST_SNAPSHOT_FILE_READ(addrinfo, hostlist_file, &td,
+ addrinfo_read_hostlist_func);
+ if (rv != 0)
+ goto fin;
+
+ if (snapshot_file != NULL) {
+ if (access(snapshot_file, W_OK | R_OK) != 0) {
+ if (errno == ENOENT)
+ method = TEST_BUILD_SNAPSHOT;
+ else {
+ if (debug)
+ printf("can't access the snapshot file %s\n",
+ snapshot_file);
+
+ rv = -1;
+ goto fin;
+ }
+ } else {
+ rv = TEST_SNAPSHOT_FILE_READ(addrinfo, snapshot_file,
+ &td_snap, addrinfo_read_snapshot_func);
+ if (rv != 0) {
+ if (debug)
+ printf("error reading snapshot file\n");
+ goto fin;
+ }
+ }
+ }
+
+ switch (method) {
+ case TEST_GETADDRINFO:
+ if (snapshot_file != NULL)
+ rv = DO_2PASS_TEST(addrinfo, &td, &td_snap,
+ compare_addrinfo, NULL);
+ break;
+ case TEST_BUILD_SNAPSHOT:
+ if (snapshot_file != NULL) {
+ rv = TEST_SNAPSHOT_FILE_WRITE(addrinfo, snapshot_file, &td,
+ sdump_addrinfo);
+ }
+ break;
+ default:
+ rv = 0;
+ break;
+ };
+
+fin:
+ TEST_DATA_DESTROY(addrinfo, &td_snap);
+ TEST_DATA_DESTROY(addrinfo, &td);
+ free(hostlist_file);
+ free(snapshot_file);
+ return (rv);
+
+}
+
diff --git a/tools/regression/lib/libc/nss/test-getaddr.t b/tools/regression/lib/libc/nss/test-getaddr.t
new file mode 100644
index 0000000..b3020f0
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getaddr.t
@@ -0,0 +1,33 @@
+#!/bin/sh
+# $FreeBSD$
+
+do_test() {
+ number=$1
+ comment=$2
+ opt=$3
+ if ./$executable $opt; then
+ echo "ok $number - $comment"
+ else
+ echo "not ok $number - $comment"
+ fi
+}
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..6
+#Tests with hints.ai_family is set to PF_UNSPEC
+do_test 1 'getaddrinfo() (PF_UNSPEC)' '-f mach'
+do_test 2 'getaddrinfo() snapshot (PF_UNSPEC)' '-f mach -s snapshot_ai'
+
+#Tests with hints.ai_family is set to PF_INET
+do_test 3 'getaddrinfo() (PF_INET)' '-f mach'
+do_test 4 'getaddrinfo() snapshot (PF_INET)' '-4 -f mach -s snapshot_ai4'
+
+#Tests with hints.ai_family is set to PF_INET6
+do_test 5 'getaddrinfo() (PF_INET6)' '-f mach'
+do_test 6 'getaddrinfo() snapshot (PF_INET6)' '-6 -f mach -s snapshot_ai6'
+
diff --git a/tools/regression/lib/libc/nss/test-getgr.c b/tools/regression/lib/libc/nss/test-getgr.c
new file mode 100644
index 0000000..1b573e8
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getgr.c
@@ -0,0 +1,534 @@
+/*-
+ * Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
+ * All rights regrped.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <arpa/inet.h>
+#include <assert.h>
+#include <errno.h>
+#include <grp.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stringlist.h>
+#include <unistd.h>
+#include "testutil.h"
+
+enum test_methods {
+ TEST_GETGRENT,
+ TEST_GETGRNAM,
+ TEST_GETGRGID,
+ TEST_GETGRENT_2PASS,
+ TEST_BUILD_SNAPSHOT
+};
+
+static int debug = 0;
+static enum test_methods method = TEST_BUILD_SNAPSHOT;
+
+DECLARE_TEST_DATA(group)
+DECLARE_TEST_FILE_SNAPSHOT(group)
+DECLARE_1PASS_TEST(group)
+DECLARE_2PASS_TEST(group)
+
+static void clone_group(struct group *, struct group const *);
+static int compare_group(struct group *, struct group *, void *);
+static void dump_group(struct group *);
+static void free_group(struct group *);
+
+static void sdump_group(struct group *, char *, size_t);
+static int group_read_snapshot_func(struct group *, char *);
+
+static int group_check_ambiguity(struct group_test_data *,
+ struct group *);
+static int group_fill_test_data(struct group_test_data *);
+static int group_test_correctness(struct group *, void *);
+static int group_test_getgrnam(struct group *, void *);
+static int group_test_getgrgid(struct group *, void *);
+static int group_test_getgrent(struct group *, void *);
+
+static void usage(void) __attribute__((__noreturn__));
+
+IMPLEMENT_TEST_DATA(group)
+IMPLEMENT_TEST_FILE_SNAPSHOT(group)
+IMPLEMENT_1PASS_TEST(group)
+IMPLEMENT_2PASS_TEST(group)
+
+static void
+clone_group(struct group *dest, struct group const *src)
+{
+ assert(dest != NULL);
+ assert(src != NULL);
+
+ char **cp;
+ int members_num;
+
+ memset(dest, 0, sizeof(struct group));
+
+ if (src->gr_name != NULL) {
+ dest->gr_name = strdup(src->gr_name);
+ assert(dest->gr_name != NULL);
+ }
+
+ if (src->gr_passwd != NULL) {
+ dest->gr_passwd = strdup(src->gr_passwd);
+ assert(dest->gr_passwd != NULL);
+ }
+ dest->gr_gid = src->gr_gid;
+
+ if (src->gr_mem != NULL) {
+ members_num = 0;
+ for (cp = src->gr_mem; *cp; ++cp)
+ ++members_num;
+
+ dest->gr_mem = (char **)malloc(
+ (members_num + 1) * (sizeof(char *)));
+ assert(dest->gr_mem != NULL);
+ memset(dest->gr_mem, 0, (members_num+1) * (sizeof(char *)));
+
+ for (cp = src->gr_mem; *cp; ++cp) {
+ dest->gr_mem[cp - src->gr_mem] = strdup(*cp);
+ assert(dest->gr_mem[cp - src->gr_mem] != NULL);
+ }
+ }
+}
+
+static void
+free_group(struct group *grp)
+{
+ char **cp;
+
+ assert(grp != NULL);
+
+ free(grp->gr_name);
+ free(grp->gr_passwd);
+
+ for (cp = grp->gr_mem; *cp; ++cp)
+ free(*cp);
+ free(grp->gr_mem);
+}
+
+static int
+compare_group(struct group *grp1, struct group *grp2, void *mdata)
+{
+ char **c1, **c2;
+
+ if (grp1 == grp2)
+ return (0);
+
+ if ((grp1 == NULL) || (grp2 == NULL))
+ goto errfin;
+
+ if ((strcmp(grp1->gr_name, grp2->gr_name) != 0) ||
+ (strcmp(grp1->gr_passwd, grp2->gr_passwd) != 0) ||
+ (grp1->gr_gid != grp2->gr_gid))
+ goto errfin;
+
+ c1 = grp1->gr_mem;
+ c2 = grp2->gr_mem;
+
+ if ((grp1->gr_mem == NULL) || (grp2->gr_mem == NULL))
+ goto errfin;
+
+ for (;*c1 && *c2; ++c1, ++c2)
+ if (strcmp(*c1, *c2) != 0)
+ goto errfin;
+
+ if ((*c1 != '\0') || (*c2 != '\0'))
+ goto errfin;
+
+ return 0;
+
+errfin:
+ if ((debug) && (mdata == NULL)) {
+ printf("following structures are not equal:\n");
+ dump_group(grp1);
+ dump_group(grp2);
+ }
+
+ return (-1);
+}
+
+static void
+sdump_group(struct group *grp, char *buffer, size_t buflen)
+{
+ char **cp;
+ int written;
+
+ written = snprintf(buffer, buflen, "%s %s %d",
+ grp->gr_name, grp->gr_passwd, grp->gr_gid);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (grp->gr_mem != NULL) {
+ if (*(grp->gr_mem) != '\0') {
+ for (cp = grp->gr_mem; *cp; ++cp) {
+ written = snprintf(buffer, buflen, " %s",*cp);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (buflen == 0)
+ return;
+ }
+ } else
+ snprintf(buffer, buflen, " nomem");
+ } else
+ snprintf(buffer, buflen, " (null)");
+}
+
+static int
+group_read_snapshot_func(struct group *grp, char *line)
+{
+ StringList *sl;
+ char *s, *ps, *ts;
+ int i;
+
+ if (debug)
+ printf("1 line read from snapshot:\n%s\n", line);
+
+ i = 0;
+ sl = NULL;
+ ps = line;
+ memset(grp, 0, sizeof(struct group));
+ while ( (s = strsep(&ps, " ")) != NULL) {
+ switch (i) {
+ case 0:
+ grp->gr_name = strdup(s);
+ assert(grp->gr_name != NULL);
+ break;
+
+ case 1:
+ grp->gr_passwd = strdup(s);
+ assert(grp->gr_passwd != NULL);
+ break;
+
+ case 2:
+ grp->gr_gid = (gid_t)strtol(s, &ts, 10);
+ if (*ts != '\0') {
+ free(grp->gr_name);
+ free(grp->gr_passwd);
+ return (-1);
+ }
+ break;
+
+ default:
+ if (sl == NULL) {
+ if (strcmp(s, "(null)") == 0)
+ return (0);
+
+ sl = sl_init();
+ assert(sl != NULL);
+
+ if (strcmp(s, "nomem") != 0) {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl, ts);
+ }
+ } else {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl, ts);
+ }
+ break;
+ };
+ ++i;
+ }
+
+ if (i < 3) {
+ free(grp->gr_name);
+ free(grp->gr_passwd);
+ memset(grp, 0, sizeof(struct group));
+ return (-1);
+ }
+
+ sl_add(sl, NULL);
+ grp->gr_mem = sl->sl_str;
+
+ /* NOTE: is it a dirty hack or not? */
+ free(sl);
+ return (0);
+}
+
+static void
+dump_group(struct group *result)
+{
+ if (result != NULL) {
+ char buffer[1024];
+ sdump_group(result, buffer, sizeof(buffer));
+ printf("%s\n", buffer);
+ } else
+ printf("(null)\n");
+}
+
+static int
+group_fill_test_data(struct group_test_data *td)
+{
+ struct group *grp;
+
+ setgroupent(1);
+ while ((grp = getgrent()) != NULL) {
+ if (group_test_correctness(grp, NULL) == 0)
+ TEST_DATA_APPEND(group, td, grp);
+ else
+ return (-1);
+ }
+ endgrent();
+
+ return (0);
+}
+
+static int
+group_test_correctness(struct group *grp, void *mdata)
+{
+ if (debug) {
+ printf("testing correctness with the following data:\n");
+ dump_group(grp);
+ }
+
+ if (grp == NULL)
+ goto errfin;
+
+ if (grp->gr_name == NULL)
+ goto errfin;
+
+ if (grp->gr_passwd == NULL)
+ goto errfin;
+
+ if (grp->gr_mem == NULL)
+ goto errfin;
+
+ if (debug)
+ printf("correct\n");
+
+ return (0);
+errfin:
+ if (debug)
+ printf("incorrect\n");
+
+ return (-1);
+}
+
+/* group_check_ambiguity() is needed here because when doing the getgrent()
+ * calls sequence, records from different nsswitch sources can be different,
+ * though having the same pw_name/pw_uid */
+static int
+group_check_ambiguity(struct group_test_data *td, struct group *pwd)
+{
+
+ return (TEST_DATA_FIND(group, td, pwd, compare_group,
+ NULL) != NULL ? 0 : -1);
+}
+
+static int
+group_test_getgrnam(struct group *grp_model, void *mdata)
+{
+ struct group *grp;
+
+ if (debug) {
+ printf("testing getgrnam() with the following data:\n");
+ dump_group(grp_model);
+ }
+
+ grp = getgrnam(grp_model->gr_name);
+ if (group_test_correctness(grp, NULL) != 0)
+ goto errfin;
+
+ if ((compare_group(grp, grp_model, NULL) != 0) &&
+ (group_check_ambiguity((struct group_test_data *)mdata, grp)
+ !=0))
+ goto errfin;
+
+ if (debug)
+ printf("ok\n");
+ return (0);
+
+errfin:
+ if (debug)
+ printf("not ok\n");
+
+ return (-1);
+}
+
+static int
+group_test_getgrgid(struct group *grp_model, void *mdata)
+{
+ struct group *grp;
+
+ if (debug) {
+ printf("testing getgrgid() with the following data...\n");
+ dump_group(grp_model);
+ }
+
+ grp = getgrgid(grp_model->gr_gid);
+ if ((group_test_correctness(grp, NULL) != 0) ||
+ ((compare_group(grp, grp_model, NULL) != 0) &&
+ (group_check_ambiguity((struct group_test_data *)mdata, grp)
+ != 0))) {
+ if (debug)
+ printf("not ok\n");
+ return (-1);
+ } else {
+ if (debug)
+ printf("ok\n");
+ return (0);
+ }
+}
+
+static int
+group_test_getgrent(struct group *grp, void *mdata)
+{
+ /* Only correctness can be checked when doing 1-pass test for
+ * getgrent(). */
+ return (group_test_correctness(grp, NULL));
+}
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr,
+ "Usage: %s -nge2 [-d] [-s <file>]\n",
+ getprogname());
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct group_test_data td, td_snap, td_2pass;
+ char *snapshot_file;
+ int rv;
+ int c;
+
+ if (argc < 2)
+ usage();
+
+ snapshot_file = NULL;
+ while ((c = getopt(argc, argv, "nge2ds:")) != -1)
+ switch (c) {
+ case 'd':
+ debug++;
+ break;
+ case 'n':
+ method = TEST_GETGRNAM;
+ break;
+ case 'g':
+ method = TEST_GETGRGID;
+ break;
+ case 'e':
+ method = TEST_GETGRENT;
+ break;
+ case '2':
+ method = TEST_GETGRENT_2PASS;
+ break;
+ case 's':
+ snapshot_file = strdup(optarg);
+ break;
+ default:
+ usage();
+ }
+
+ TEST_DATA_INIT(group, &td, clone_group, free_group);
+ TEST_DATA_INIT(group, &td_snap, clone_group, free_group);
+ if (snapshot_file != NULL) {
+ if (access(snapshot_file, W_OK | R_OK) != 0) {
+ if (errno == ENOENT)
+ method = TEST_BUILD_SNAPSHOT;
+ else {
+ if (debug)
+ printf("can't access the file %s\n",
+ snapshot_file);
+
+ rv = -1;
+ goto fin;
+ }
+ } else {
+ if (method == TEST_BUILD_SNAPSHOT) {
+ rv = 0;
+ goto fin;
+ }
+
+ TEST_SNAPSHOT_FILE_READ(group, snapshot_file,
+ &td_snap, group_read_snapshot_func);
+ }
+ }
+
+ rv = group_fill_test_data(&td);
+ if (rv == -1)
+ return (-1);
+ switch (method) {
+ case TEST_GETGRNAM:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(group, &td,
+ group_test_getgrnam, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(group, &td_snap,
+ group_test_getgrnam, (void *)&td_snap);
+ break;
+ case TEST_GETGRGID:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(group, &td,
+ group_test_getgrgid, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(group, &td_snap,
+ group_test_getgrgid, (void *)&td_snap);
+ break;
+ case TEST_GETGRENT:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(group, &td, group_test_getgrent,
+ (void *)&td);
+ else
+ rv = DO_2PASS_TEST(group, &td, &td_snap,
+ compare_group, NULL);
+ break;
+ case TEST_GETGRENT_2PASS:
+ TEST_DATA_INIT(group, &td_2pass, clone_group, free_group);
+ rv = group_fill_test_data(&td_2pass);
+ if (rv != -1)
+ rv = DO_2PASS_TEST(group, &td, &td_2pass,
+ compare_group, NULL);
+ TEST_DATA_DESTROY(group, &td_2pass);
+ break;
+ case TEST_BUILD_SNAPSHOT:
+ if (snapshot_file != NULL)
+ rv = TEST_SNAPSHOT_FILE_WRITE(group, snapshot_file, &td,
+ sdump_group);
+ break;
+ default:
+ rv = 0;
+ break;
+ };
+
+fin:
+ TEST_DATA_DESTROY(group, &td_snap);
+ TEST_DATA_DESTROY(group, &td);
+ free(snapshot_file);
+ return (rv);
+}
diff --git a/tools/regression/lib/libc/nss/test-getgr.t b/tools/regression/lib/libc/nss/test-getgr.t
new file mode 100644
index 0000000..e2cf8e5
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getgr.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+do_test() {
+ number=$1
+ comment=$2
+ opt=$3
+ if ./$executable $opt; then
+ echo "ok $number - $comment"
+ else
+ echo "not ok $number - $comment"
+ fi
+}
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..8
+do_test 1 'getgrnam()' '-n'
+do_test 2 'getgrgid()' '-g'
+do_test 3 'getgrent()' '-e'
+do_test 4 'getgrent() 2-pass' '-2'
+do_test 5 'building snapshot, if needed' '-s snapshot_grp'
+do_test 6 'getgrnam() snapshot' '-n -s snapshot_grp'
+do_test 7 'getgrgid() snapshot' '-g -s snapshot_grp'
+do_test 8 'getgrent() snapshot' '-e -s snapshot_grp'
diff --git a/tools/regression/lib/libc/nss/test-gethostby.c b/tools/regression/lib/libc/nss/test-gethostby.c
new file mode 100644
index 0000000..83db92d
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-gethostby.c
@@ -0,0 +1,1051 @@
+/*-
+ * Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
+ * All rights rehted.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <arpa/inet.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <assert.h>
+#include <errno.h>
+#include <netdb.h>
+#include <resolv.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stringlist.h>
+#include <unistd.h>
+#include "testutil.h"
+
+#ifndef min
+#define min(a,b) (((a)<(b))?(a):(b))
+#endif
+
+enum test_methods {
+ TEST_GETHOSTBYNAME2,
+ TEST_GETHOSTBYADDR,
+ TEST_GETHOSTBYNAME2_GETADDRINFO,
+ TEST_GETHOSTBYADDR_GETNAMEINFO,
+ TEST_BUILD_SNAPSHOT,
+ TEST_BUILD_ADDR_SNAPSHOT
+};
+
+static int use_ipnode_functions = 0;
+static int use_ipv6_mapping = 0;
+static int debug = 0;
+static int af_type = AF_INET;
+static enum test_methods method = TEST_BUILD_SNAPSHOT;
+
+DECLARE_TEST_DATA(hostent)
+DECLARE_TEST_FILE_SNAPSHOT(hostent)
+DECLARE_1PASS_TEST(hostent)
+DECLARE_2PASS_TEST(hostent)
+
+/* These stubs will use gethostby***() or getipnodeby***() functions,
+ * depending on the use_ipnode_functions global variable value */
+static struct hostent *__gethostbyname2(const char *, int);
+static struct hostent *__gethostbyaddr(const void *, socklen_t, int);
+static void __freehostent(struct hostent *);
+
+static void clone_hostent(struct hostent *, struct hostent const *);
+static int compare_hostent(struct hostent *, struct hostent *, void *);
+static void dump_hostent(struct hostent *);
+static void free_hostent(struct hostent *);
+
+static int is_hostent_equal(struct hostent *, struct addrinfo *);
+
+static void sdump_hostent(struct hostent *, char *, size_t);
+static int hostent_read_hostlist_func(struct hostent *, char *);
+static int hostent_read_snapshot_addr(char *, unsigned char *, size_t);
+static int hostent_read_snapshot_func(struct hostent *, char *);
+
+static int hostent_test_correctness(struct hostent *, void *);
+static int hostent_test_gethostbyaddr(struct hostent *, void *);
+static int hostent_test_getaddrinfo_eq(struct hostent *, void *);
+static int hostent_test_getnameinfo_eq(struct hostent *, void *);
+
+static void usage(void) __attribute__((__noreturn__));
+
+IMPLEMENT_TEST_DATA(hostent)
+IMPLEMENT_TEST_FILE_SNAPSHOT(hostent)
+IMPLEMENT_1PASS_TEST(hostent)
+IMPLEMENT_2PASS_TEST(hostent)
+
+static struct hostent *
+__gethostbyname2(const char *name, int af)
+{
+ struct hostent *he;
+ int error;
+
+ if (use_ipnode_functions == 0) {
+ if (use_ipv6_mapping != 0)
+ af = AF_INET;
+
+ he = gethostbyname2(name, af);
+ } else {
+ error = 0;
+ if (use_ipv6_mapping != 0)
+ af = AF_INET6;
+ he = getipnodebyname(name, af, use_ipv6_mapping == 0 ? AI_ALL :
+ AI_ALL | AI_V4MAPPED, &error);
+ if (he == NULL);
+ errno = error;
+ }
+
+ return (he);
+}
+
+static struct hostent *
+__gethostbyaddr(const void *addr, socklen_t len, int af)
+{
+ struct hostent *he;
+ int error;
+
+ if (use_ipnode_functions == 0) {
+ if (use_ipv6_mapping != 0)
+ af = AF_INET;
+
+ he = gethostbyaddr(addr, len, af);
+ } else {
+ error = 0;
+ if (use_ipv6_mapping != 0)
+ af = AF_INET6;
+ he = getipnodebyaddr(addr, len, use_ipv6_mapping == 0 ? AI_ALL :
+ AI_ALL | AI_V4MAPPED, &error);
+ if (he == NULL)
+ errno = error;
+ }
+
+ return (he);
+}
+
+static void
+__freehostent(struct hostent *he)
+{
+ /* NOTE: checking for he != NULL - just in case */
+ if ((use_ipnode_functions != 0) && (he != NULL))
+ freehostent(he);
+}
+
+static void
+clone_hostent(struct hostent *dest, struct hostent const *src)
+{
+ assert(dest != NULL);
+ assert(src != NULL);
+
+ char **cp;
+ int aliases_num;
+ int addrs_num;
+ size_t offset;
+
+ memset(dest, 0, sizeof(struct hostent));
+
+ if (src->h_name != NULL) {
+ dest->h_name = strdup(src->h_name);
+ assert(dest->h_name != NULL);
+ }
+
+ dest->h_addrtype = src->h_addrtype;
+ dest->h_length = src->h_length;
+
+ if (src->h_aliases != NULL) {
+ aliases_num = 0;
+ for (cp = src->h_aliases; *cp; ++cp)
+ ++aliases_num;
+
+ dest->h_aliases = (char **)malloc((aliases_num + 1) *
+ (sizeof(char *)));
+ assert(dest->h_aliases != NULL);
+ memset(dest->h_aliases, 0, (aliases_num + 1) *
+ (sizeof(char *)));
+
+ for (cp = src->h_aliases; *cp; ++cp) {
+ dest->h_aliases[cp - src->h_aliases] = strdup(*cp);
+ assert(dest->h_aliases[cp - src->h_aliases] != NULL);
+ }
+ }
+
+ if (src->h_addr_list != NULL) {
+ addrs_num = 0;
+ for (cp = src->h_addr_list; *cp; ++cp)
+ ++addrs_num;
+
+ dest->h_addr_list = (char **)malloc((addrs_num + 1) *
+ (sizeof(char *)));
+ assert(dest->h_addr_list != NULL);
+ memset(dest->h_addr_list, 0, (addrs_num + 1) *
+ (sizeof(char *)));
+
+ for (cp = src->h_addr_list; *cp; ++cp) {
+ offset = cp - src->h_addr_list;
+ dest->h_addr_list[offset] =
+ (char *)malloc(src->h_length);
+ assert(dest->h_addr_list[offset] != NULL);
+ memcpy(dest->h_addr_list[offset],
+ src->h_addr_list[offset], src->h_length);
+ }
+ }
+}
+
+static void
+free_hostent(struct hostent *ht)
+{
+ char **cp;
+
+ assert(ht != NULL);
+
+ free(ht->h_name);
+
+ if (ht->h_aliases != NULL) {
+ for (cp = ht->h_aliases; *cp; ++cp)
+ free(*cp);
+ free(ht->h_aliases);
+ }
+
+ if (ht->h_addr_list != NULL) {
+ for (cp = ht->h_addr_list; *cp; ++cp)
+ free(*cp);
+ free(ht->h_addr_list);
+ }
+}
+
+static int
+compare_hostent(struct hostent *ht1, struct hostent *ht2, void *mdata)
+{
+ char **c1, **c2;
+
+ if (ht1 == ht2)
+ return 0;
+
+ if ((ht1 == NULL) || (ht2 == NULL))
+ goto errfin;
+
+ if ((ht1->h_name == NULL) || (ht2->h_name == NULL))
+ goto errfin;
+
+ if ((ht1->h_addrtype != ht2->h_addrtype) ||
+ (ht1->h_length != ht2->h_length) ||
+ (strcmp(ht1->h_name, ht2->h_name) != 0))
+ goto errfin;
+
+ c1 = ht1->h_aliases;
+ c2 = ht2->h_aliases;
+
+ if (((ht1->h_aliases == NULL) || (ht2->h_aliases == NULL)) &&
+ (ht1->h_aliases != ht2->h_aliases))
+ goto errfin;
+
+ if ((c1 != NULL) && (c2 != NULL)) {
+ for (;*c1 && *c2; ++c1, ++c2)
+ if (strcmp(*c1, *c2) != 0)
+ goto errfin;
+
+ if ((*c1 != NULL) || (*c2 != NULL))
+ goto errfin;
+ }
+
+ c1 = ht1->h_addr_list;
+ c2 = ht2->h_addr_list;
+
+ if (((ht1->h_addr_list == NULL) || (ht2->h_addr_list== NULL)) &&
+ (ht1->h_addr_list != ht2->h_addr_list))
+ goto errfin;
+
+ if ((c1 != NULL) && (c2 != NULL)) {
+ for (;*c1 && *c2; ++c1, ++c2)
+ if (memcmp(*c1, *c2, ht1->h_length) != 0)
+ goto errfin;
+
+ if ((*c1 != NULL) || (*c2 != NULL))
+ goto errfin;
+ }
+
+ return 0;
+
+errfin:
+ if ((debug) && (mdata == NULL)) {
+ printf("following structures are not equal:\n");
+ dump_hostent(ht1);
+ dump_hostent(ht2);
+ }
+
+ return (-1);
+}
+
+static int
+check_addrinfo_for_name(struct addrinfo *ai, char const *name)
+{
+ struct addrinfo *ai2;
+
+ for (ai2 = ai; ai2 != NULL; ai2 = ai2->ai_next) {
+ if (strcmp(ai2->ai_canonname, name) == 0)
+ return (0);
+ }
+
+ return (-1);
+}
+
+static int
+check_addrinfo_for_addr(struct addrinfo *ai, char const *addr,
+ socklen_t addrlen, int af)
+{
+ struct addrinfo *ai2;
+
+ for (ai2 = ai; ai2 != NULL; ai2 = ai2->ai_next) {
+ if (af != ai2->ai_family)
+ continue;
+
+ switch (af) {
+ case AF_INET:
+ if (memcmp(addr,
+ (void *)&((struct sockaddr_in *)ai2->ai_addr)->sin_addr,
+ min(addrlen, ai2->ai_addrlen)) == 0)
+ return (0);
+ break;
+ case AF_INET6:
+ if (memcmp(addr,
+ (void *)&((struct sockaddr_in6 *)ai2->ai_addr)->sin6_addr,
+ min(addrlen, ai2->ai_addrlen)) == 0)
+ return (0);
+ break;
+ default:
+ break;
+ }
+ }
+
+ return (-1);
+}
+
+static int
+is_hostent_equal(struct hostent *he, struct addrinfo *ai)
+{
+ char **cp;
+ int rv;
+
+ if (debug)
+ printf("checking equality of he and ai\n");
+
+ rv = check_addrinfo_for_name(ai, he->h_name);
+ if (rv != 0) {
+ if (debug)
+ printf("not equal - he->h_name couldn't be found\n");
+
+ return (rv);
+ }
+
+ for (cp = he->h_addr_list; *cp; ++cp) {
+ rv = check_addrinfo_for_addr(ai, *cp, he->h_length,
+ he->h_addrtype);
+ if (rv != 0) {
+ if (debug)
+ printf("not equal - one of he->h_addr_list couldn't be found\n");
+
+ return (rv);
+ }
+ }
+
+ if (debug)
+ printf("equal\n");
+
+ return (0);
+}
+
+static void
+sdump_hostent(struct hostent *ht, char *buffer, size_t buflen)
+{
+ char **cp;
+ size_t i;
+ int written;
+
+ written = snprintf(buffer, buflen, "%s %d %d",
+ ht->h_name, ht->h_addrtype, ht->h_length);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (ht->h_aliases != NULL) {
+ if (*(ht->h_aliases) != NULL) {
+ for (cp = ht->h_aliases; *cp; ++cp) {
+ written = snprintf(buffer, buflen, " %s",*cp);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (buflen == 0)
+ return;
+ }
+ } else {
+ written = snprintf(buffer, buflen, " noaliases");
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+ }
+ } else {
+ written = snprintf(buffer, buflen, " (null)");
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+ }
+
+ written = snprintf(buffer, buflen, " : ");
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (ht->h_addr_list != NULL) {
+ if (*(ht->h_addr_list) != NULL) {
+ for (cp = ht->h_addr_list; *cp; ++cp) {
+ for (i = 0; i < ht->h_length; ++i ) {
+ written = snprintf(buffer, buflen,
+ i + 1 != ht->h_length ? "%d." : "%d",
+ (unsigned char)(*cp)[i]);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (buflen == 0)
+ return;
+ }
+
+ if (*(cp + 1) ) {
+ written = snprintf(buffer, buflen, " ");
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+ }
+ }
+ } else {
+ written = snprintf(buffer, buflen, " noaddrs");
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+ }
+ } else {
+ written = snprintf(buffer, buflen, " (null)");
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+ }
+}
+
+static int
+hostent_read_hostlist_func(struct hostent *he, char *line)
+{
+ struct hostent *result;
+ int rv;
+
+ if (debug)
+ printf("resolving %s: ", line);
+ result = __gethostbyname2(line, af_type);
+ if (result != NULL) {
+ if (debug)
+ printf("found\n");
+
+ rv = hostent_test_correctness(result, NULL);
+ if (rv != 0) {
+ __freehostent(result);
+ return (rv);
+ }
+
+ clone_hostent(he, result);
+ __freehostent(result);
+ } else {
+ if (debug)
+ printf("not found\n");
+
+ memset(he, 0, sizeof(struct hostent));
+ he->h_name = strdup(line);
+ assert(he->h_name != NULL);
+ }
+ return (0);
+}
+
+static int
+hostent_read_snapshot_addr(char *addr, unsigned char *result, size_t len)
+{
+ char *s, *ps, *ts;
+
+ ps = addr;
+ while ( (s = strsep(&ps, ".")) != NULL) {
+ if (len == 0)
+ return (-1);
+
+ *result = (unsigned char)strtol(s, &ts, 10);
+ ++result;
+ if (*ts != '\0')
+ return (-1);
+
+ --len;
+ }
+ if (len != 0)
+ return (-1);
+ else
+ return (0);
+}
+
+static int
+hostent_read_snapshot_func(struct hostent *ht, char *line)
+{
+ StringList *sl1, *sl2;;
+ char *s, *ps, *ts;
+ int i, rv;
+
+ if (debug)
+ printf("1 line read from snapshot:\n%s\n", line);
+
+ rv = 0;
+ i = 0;
+ sl1 = sl2 = NULL;
+ ps = line;
+ memset(ht, 0, sizeof(struct hostent));
+ while ( (s = strsep(&ps, " ")) != NULL) {
+ switch (i) {
+ case 0:
+ ht->h_name = strdup(s);
+ assert(ht->h_name != NULL);
+ break;
+
+ case 1:
+ ht->h_addrtype = (int)strtol(s, &ts, 10);
+ if (*ts != '\0')
+ goto fin;
+ break;
+
+ case 2:
+ ht->h_length = (int)strtol(s, &ts, 10);
+ if (*ts != '\0')
+ goto fin;
+ break;
+
+ case 3:
+ if (sl1 == NULL) {
+ if (strcmp(s, "(null)") == 0)
+ return (0);
+
+ sl1 = sl_init();
+ assert(sl1 != NULL);
+
+ if (strcmp(s, "noaliases") != 0) {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl1, ts);
+ }
+ } else {
+ if (strcmp(s, ":") == 0)
+ ++i;
+ else {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl1, ts);
+ }
+ }
+ break;
+
+ case 4:
+ if (sl2 == NULL) {
+ if (strcmp(s, "(null)") == 0)
+ return (0);
+
+ sl2 = sl_init();
+ assert(sl2 != NULL);
+
+ if (strcmp(s, "noaddrs") != 0) {
+ ts = (char *)malloc(ht->h_length);
+ assert(ts != NULL);
+ memset(ts, 0, ht->h_length);
+ rv = hostent_read_snapshot_addr(
+ s, ts, ht->h_length);
+ sl_add(sl2, ts);
+ if (rv != 0)
+ goto fin;
+ }
+ } else {
+ ts = (char *)malloc(ht->h_length);
+ assert(ts != NULL);
+ memset(ts, 0, ht->h_length);
+ rv = hostent_read_snapshot_addr(
+ s, ts, ht->h_length);
+ sl_add(sl2, ts);
+ if (rv != 0)
+ goto fin;
+ }
+ break;
+ default:
+ break;
+ };
+
+ if ((i != 3) && (i != 4))
+ ++i;
+ }
+
+fin:
+ if (sl1 != NULL) {
+ sl_add(sl1, NULL);
+ ht->h_aliases = sl1->sl_str;
+ }
+ if (sl2 != NULL) {
+ sl_add(sl2, NULL);
+ ht->h_addr_list = sl2->sl_str;
+ }
+
+ if ((i != 4) || (rv != 0)) {
+ free_hostent(ht);
+ memset(ht, 0, sizeof(struct hostent));
+ return (-1);
+ }
+
+ /* NOTE: is it a dirty hack or not? */
+ free(sl1);
+ free(sl2);
+ return (0);
+}
+
+static void
+dump_hostent(struct hostent *result)
+{
+ if (result != NULL) {
+ char buffer[1024];
+ sdump_hostent(result, buffer, sizeof(buffer));
+ printf("%s\n", buffer);
+ } else
+ printf("(null)\n");
+}
+
+static int
+hostent_test_correctness(struct hostent *ht, void *mdata)
+{
+ if (debug) {
+ printf("testing correctness with the following data:\n");
+ dump_hostent(ht);
+ }
+
+ if (ht == NULL)
+ goto errfin;
+
+ if (ht->h_name == NULL)
+ goto errfin;
+
+ if (!((ht->h_addrtype >= 0) && (ht->h_addrtype < AF_MAX)))
+ goto errfin;
+
+ if ((ht->h_length != sizeof(struct in_addr)) &&
+ (ht->h_length != sizeof(struct in6_addr)))
+ goto errfin;
+
+ if (ht->h_aliases == NULL)
+ goto errfin;
+
+ if (ht->h_addr_list == NULL)
+ goto errfin;
+
+ if (debug)
+ printf("correct\n");
+
+ return (0);
+errfin:
+ if (debug)
+ printf("incorrect\n");
+
+ return (-1);
+}
+
+static int
+hostent_test_gethostbyaddr(struct hostent *he, void *mdata)
+{
+ struct hostent *result;
+ struct hostent_test_data *addr_test_data;
+ int rv;
+
+ addr_test_data = (struct hostent_test_data *)mdata;
+
+ /* We should omit unresolved hostents */
+ if (he->h_addr_list != NULL) {
+ char **cp;
+ for (cp = he->h_addr_list; *cp; ++cp) {
+ if (debug)
+ printf("doing reverse lookup for %s\n", he->h_name);
+
+ result = __gethostbyaddr(*cp, he->h_length,
+ he->h_addrtype);
+ if (result == NULL) {
+ if (debug)
+ printf("warning: reverse lookup failed\n");
+
+ continue;
+ }
+ rv = hostent_test_correctness(result, NULL);
+ if (rv != 0) {
+ __freehostent(result);
+ return (rv);
+ }
+
+ if (addr_test_data != NULL)
+ TEST_DATA_APPEND(hostent, addr_test_data, result);
+
+ __freehostent(result);
+ }
+ }
+
+ return (0);
+}
+
+static int
+hostent_test_getaddrinfo_eq(struct hostent *he, void *mdata)
+{
+ struct addrinfo *ai, hints;
+ int rv;
+
+ ai = NULL;
+ memset(&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = af_type;
+ hints.ai_flags = AI_CANONNAME;
+
+ if (debug)
+ printf("using getaddrinfo() to resolve %s\n", he->h_name);
+
+ /* struct hostent *he was not resolved */
+ if (he->h_addr_list == NULL) {
+ /* We can be sure that he->h_name is not NULL */
+ rv = getaddrinfo(he->h_name, NULL, &hints, &ai);
+ if (rv == 0) {
+ if (debug)
+ printf("not ok - shouldn't have been resolved\n");
+ return (-1);
+ }
+ } else {
+ rv = getaddrinfo(he->h_name, NULL, &hints, &ai);
+ if (rv != 0) {
+ if (debug)
+ printf("not ok - should have beed resolved\n");
+ return (-1);
+ }
+
+ rv = is_hostent_equal(he, ai);
+ if (rv != 0) {
+ if (debug)
+ printf("not ok - addrinfo and hostent are not equal\n");
+ return (-1);
+ }
+
+ }
+
+ return (0);
+}
+
+static int
+hostent_test_getnameinfo_eq(struct hostent *he, void *mdata)
+{
+ char buffer[NI_MAXHOST];
+ struct sockaddr_in sin;
+ struct sockaddr_in6 sin6;
+ struct sockaddr *saddr;
+ struct hostent *result;
+ int rv;
+
+ if (he->h_addr_list != NULL) {
+ char **cp;
+ for (cp = he->h_addr_list; *cp; ++cp) {
+ if (debug)
+ printf("doing reverse lookup for %s\n", he->h_name);
+
+ result = __gethostbyaddr(*cp, he->h_length,
+ he->h_addrtype);
+ if (result != NULL) {
+ rv = hostent_test_correctness(result, NULL);
+ if (rv != 0) {
+ __freehostent(result);
+ return (rv);
+ }
+ } else {
+ if (debug)
+ printf("reverse lookup failed\n");
+ }
+
+ switch (he->h_addrtype) {
+ case AF_INET:
+ memset(&sin, 0, sizeof(struct sockaddr_in));
+ sin.sin_len = sizeof(struct sockaddr_in);
+ sin.sin_family = AF_INET;
+ memcpy(&sin.sin_addr, *cp, he->h_length);
+
+ saddr = (struct sockaddr *)&sin;
+ break;
+ case AF_INET6:
+ memset(&sin6, 0, sizeof(struct sockaddr_in6));
+ sin6.sin6_len = sizeof(struct sockaddr_in6);
+ sin6.sin6_family = AF_INET6;
+ memcpy(&sin6.sin6_addr, *cp, he->h_length);
+
+ saddr = (struct sockaddr *)&sin6;
+ break;
+ default:
+ if (debug)
+ printf("warning: %d family is unsupported\n",
+ he->h_addrtype);
+ continue;
+ }
+
+ assert(saddr != NULL);
+ rv = getnameinfo(saddr, saddr->sa_len, buffer,
+ sizeof(buffer), NULL, 0, NI_NAMEREQD);
+
+ if ((rv != 0) && (result != NULL)) {
+ if (debug)
+ printf("not ok - getnameinfo() didn't make the reverse lookup, when it should have (%s)\n",
+ gai_strerror(rv));
+ return (rv);
+ }
+
+ if ((rv == 0) && (result == NULL)) {
+ if (debug)
+ printf("not ok - getnameinfo() made the reverse lookup, when it shouldn't have\n");
+ return (rv);
+ }
+
+ if ((rv != 0) && (result == NULL)) {
+ if (debug)
+ printf("ok - both getnameinfo() and ***byaddr() failed\n");
+
+ continue;
+ }
+
+ if (debug)
+ printf("comparing %s with %s\n", result->h_name,
+ buffer);
+
+ rv = strcmp(result->h_name, buffer);
+ __freehostent(result);
+
+ if (rv != 0) {
+ if (debug)
+ printf("not ok - getnameinfo() and ***byaddr() results are not equal\n");
+ return (rv);
+ } else {
+ if (debug)
+ printf("ok - getnameinfo() and ***byaddr() results are equal\n");
+ }
+ }
+ }
+
+ return (0);
+}
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr,
+ "Usage: %s -na2i [-o] [-d] [-m46] [-s <file>] -f <file>\n",
+ getprogname());
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct hostent_test_data td, td_addr, td_snap;
+ char *snapshot_file, *hostlist_file;
+ res_state statp;
+ int rv;
+ int c;
+
+ if (argc < 2)
+ usage();
+
+ snapshot_file = NULL;
+ hostlist_file = NULL;
+ while ((c = getopt(argc, argv, "m46na2idos:f:")) != -1)
+ switch (c) {
+ case '4':
+ case '6':
+ case 'm':
+ statp = __res_state();
+ if ((statp == NULL) ||
+ ((statp->options & RES_INIT) == 0 &&
+ res_ninit(statp) == -1)) {
+ if (debug)
+ printf("error: can't init res_state\n");
+
+ free(snapshot_file);
+ free(hostlist_file);
+ return (-1);
+ }
+
+ switch (c) {
+ case '4':
+ af_type = AF_INET;
+ statp->options &= ~RES_USE_INET6;
+ break;
+ case '6':
+ af_type = AF_INET6;
+ statp->options &= ~RES_USE_INET6;
+ break;
+ case 'm':
+ statp->options |= RES_USE_INET6;
+ use_ipv6_mapping = 1;
+ break;
+ default:
+ break;
+ };
+ break;
+ case 'o':
+ use_ipnode_functions = 1;
+ break;
+ case 'd':
+ debug = 1;
+ break;
+ case 'n':
+ method = TEST_GETHOSTBYNAME2;
+ break;
+ case 'a':
+ method = TEST_GETHOSTBYADDR;
+ break;
+ case '2':
+ method = TEST_GETHOSTBYNAME2_GETADDRINFO;
+ break;
+ case 'i':
+ method = TEST_GETHOSTBYADDR_GETNAMEINFO;
+ break;
+ case 's':
+ snapshot_file = strdup(optarg);
+ break;
+ case 'f':
+ hostlist_file = strdup(optarg);
+ break;
+ default:
+ usage();
+ }
+
+ TEST_DATA_INIT(hostent, &td, clone_hostent, free_hostent);
+ TEST_DATA_INIT(hostent, &td_addr, clone_hostent, free_hostent);
+ TEST_DATA_INIT(hostent, &td_snap, clone_hostent, free_hostent);
+
+ if (hostlist_file == NULL)
+ usage();
+
+ if (access(hostlist_file, R_OK) != 0) {
+ if (debug)
+ printf("can't access the hostlist file %s\n",
+ hostlist_file);
+
+ usage();
+ }
+
+ if (debug)
+ printf("building host lists from %s\n", hostlist_file);
+
+ rv = TEST_SNAPSHOT_FILE_READ(hostent, hostlist_file, &td,
+ hostent_read_hostlist_func);
+ if (rv != 0)
+ goto fin;
+
+ if (snapshot_file != NULL) {
+ if (access(snapshot_file, W_OK | R_OK) != 0) {
+ if (errno == ENOENT) {
+ if (method != TEST_GETHOSTBYADDR)
+ method = TEST_BUILD_SNAPSHOT;
+ else
+ method = TEST_BUILD_ADDR_SNAPSHOT;
+ } else {
+ if (debug)
+ printf("can't access the snapshot file %s\n",
+ snapshot_file);
+
+ rv = -1;
+ goto fin;
+ }
+ } else {
+ rv = TEST_SNAPSHOT_FILE_READ(hostent, snapshot_file,
+ &td_snap, hostent_read_snapshot_func);
+ if (rv != 0) {
+ if (debug)
+ printf("error reading snapshot file\n");
+ goto fin;
+ }
+ }
+ }
+
+ switch (method) {
+ case TEST_GETHOSTBYNAME2:
+ if (snapshot_file != NULL)
+ rv = DO_2PASS_TEST(hostent, &td, &td_snap,
+ compare_hostent, NULL);
+ break;
+ case TEST_GETHOSTBYADDR:
+ rv = DO_1PASS_TEST(hostent, &td,
+ hostent_test_gethostbyaddr, (void *)&td_addr);
+
+ if (snapshot_file != NULL)
+ rv = DO_2PASS_TEST(hostent, &td_addr, &td_snap,
+ compare_hostent, NULL);
+ break;
+ case TEST_GETHOSTBYNAME2_GETADDRINFO:
+ rv = DO_1PASS_TEST(hostent, &td,
+ hostent_test_getaddrinfo_eq, NULL);
+ break;
+ case TEST_GETHOSTBYADDR_GETNAMEINFO:
+ rv = DO_1PASS_TEST(hostent, &td,
+ hostent_test_getnameinfo_eq, NULL);
+ break;
+ case TEST_BUILD_SNAPSHOT:
+ if (snapshot_file != NULL) {
+ rv = TEST_SNAPSHOT_FILE_WRITE(hostent, snapshot_file, &td,
+ sdump_hostent);
+ }
+ break;
+ case TEST_BUILD_ADDR_SNAPSHOT:
+ if (snapshot_file != NULL) {
+ rv = DO_1PASS_TEST(hostent, &td,
+ hostent_test_gethostbyaddr, (void *)&td_addr);
+
+ rv = TEST_SNAPSHOT_FILE_WRITE(hostent, snapshot_file,
+ &td_addr, sdump_hostent);
+ }
+ break;
+ default:
+ rv = 0;
+ break;
+ };
+
+fin:
+ TEST_DATA_DESTROY(hostent, &td_snap);
+ TEST_DATA_DESTROY(hostent, &td_addr);
+ TEST_DATA_DESTROY(hostent, &td);
+ free(hostlist_file);
+ free(snapshot_file);
+ return (rv);
+}
diff --git a/tools/regression/lib/libc/nss/test-gethostby.t b/tools/regression/lib/libc/nss/test-gethostby.t
new file mode 100644
index 0000000..d5fca17
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-gethostby.t
@@ -0,0 +1,78 @@
+#!/bin/sh
+# $FreeBSD$
+
+do_test() {
+ number=$1
+ comment=$2
+ opt=$3
+ if ./$executable $opt; then
+ echo "ok $number - $comment"
+ else
+ echo "not ok $number - $comment"
+ fi
+}
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..32
+#Tests for gethostby***() functions
+#IPv4-driven testing
+do_test 1 'gethostbyname2() (IPv4)' '-4 -n -f mach'
+do_test 2 'gethostbyaddr() (IPv4)' '-4 -a -f mach'
+do_test 3 'gethostbyname2()-getaddrinfo() (IPv4)' '-4 -2 -f mach'
+do_test 4 'gethostbyaddr()-getnameinfo() (IPv4)' '-4 -i -f mach'
+do_test 5 'gethostbyname2() snapshot (IPv4)'\
+ '-4 -n -s snapshot_htname4 -f mach'
+do_test 6 'gethostbyaddr() snapshot (IPv4)'\
+ '-4 -a -s snapshot_htaddr4 -f mach'
+
+#IPv6-driven testing
+do_test 7 'gethostbyname2() (IPv6)' '-6 -n -f mach'
+do_test 8 'gethostbyaddr() (IPv6)' '-6 -a -f mach'
+do_test 9 'gethostbyname2()-getaddrinfo() (IPv6)' '-6 -2 -f mach'
+do_test 10 'gethostbyaddr()-getnameinfo() (IPv6)' '-6 -i -f mach'
+do_test 11 'gethostbyname2() snapshot (IPv6)'\
+ '-6 -n -s snapshot_htname6 -f mach'
+do_test 12 'gethostbyaddr() snapshot (IPv6)'\
+ '-6 -a -s snapshot_htaddr6 -f mach'
+
+#Mapped IPv6-driven testing (getaddrinfo() equality test is useless here)
+do_test 13 'gethostbyname2() (IPv6 mapped)' '-m -n -f mach'
+do_test 14 'gethostbyaddr() (IPv6 mapped)' '-m -a -f mach'
+do_test 15 'gethostbyname2() snapshot (IPv6 mapped)'\
+ '-m -n -s snapshot_htname6map -f mach'
+do_test 16 'gethostbyaddr() snapshot (IPv6 mapped)'\
+ '-m -a -s snapshot_htaddr6map -f mach'
+
+#Tests for getipnodeby***() functions
+#IPv4-driven testing
+do_test 17 'getipnodebyname() (IPv4)' '-o -4 -n -f mach'
+do_test 18 'getipnodebyaddr() (IPv4)' '-o -4 -a -f mach'
+do_test 19 'getipnodebyname()-getaddrinfo() (IPv4)' '-o -4 -2 -f mach'
+do_test 20 'getipnodebyaddr()-getnameinfo() (IPv4)' '-o -4 -i -f mach'
+do_test 21 'getipnodebyname() snapshot (IPv4)'\
+ '-o -4 -n -s snapshot_ipnodename4 -f mach'
+do_test 22 'getipnodebyname() snapshot (IPv4)'\
+ '-o -4 -a -s snapshot_ipnodeaddr4 -f mach'
+
+#IPv6-driven testing
+do_test 23 'getipnodebyname() (IPv6)' '-o -6 -n -f mach'
+do_test 24 'getipnodebyaddr() (IPv6)' '-o -6 -a -f mach'
+do_test 25 'getipnodebyname()-getaddrinfo() (IPv6)' '-o -6 -2 -f mach'
+do_test 26 'getipnodebyaddr()-getnameinfo() (IPv6)' '-o -6 -i -f mach'
+do_test 27 'getipnodebyname() snapshot (IPv6)'\
+ '-o -6 -n -s snapshot_ipnodename6 -f mach'
+do_test 28 'getipnodebyaddr() snapshot (IPv6)'\
+ '-o -6 -a -s snapshot_ipnodeaddr6 -f mach'
+
+#Mapped IPv6-driven testing (getaddrinfo() equality test is useless here)
+do_test 29 'getipnodebyname() (IPv6)' '-o -m -n -f mach'
+do_test 30 'getipnodebyaddr() (IPv6)' '-o -m -a -f mach'
+do_test 31 'getipnodebyname() snapshot (IPv6)'\
+ '-o -m -n -s snapshot_ipnodename6map -f mach'
+do_test 32 'getipnodebyaddr() snapshot (IPv6)'\
+ '-o -m -a -s snapshot_ipnodeaddr6map -f mach'
diff --git a/tools/regression/lib/libc/nss/test-getproto.c b/tools/regression/lib/libc/nss/test-getproto.c
new file mode 100644
index 0000000..b94f204
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getproto.c
@@ -0,0 +1,536 @@
+/*-
+ * Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
+ * All rights repeed.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <arpa/inet.h>
+#include <assert.h>
+#include <errno.h>
+#include <netdb.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stringlist.h>
+#include <unistd.h>
+#include "testutil.h"
+
+enum test_methods {
+ TEST_GETPROTOENT,
+ TEST_GETPROTOBYNAME,
+ TEST_GETPROTOBYNUMBER,
+ TEST_GETPROTOENT_2PASS,
+ TEST_BUILD_SNAPSHOT
+};
+
+static int debug = 0;
+static enum test_methods method = TEST_BUILD_SNAPSHOT;
+
+DECLARE_TEST_DATA(protoent)
+DECLARE_TEST_FILE_SNAPSHOT(protoent)
+DECLARE_1PASS_TEST(protoent)
+DECLARE_2PASS_TEST(protoent)
+
+static void clone_protoent(struct protoent *, struct protoent const *);
+static int compare_protoent(struct protoent *, struct protoent *, void *);
+static void dump_protoent(struct protoent *);
+static void free_protoent(struct protoent *);
+
+static void sdump_protoent(struct protoent *, char *, size_t);
+static int protoent_read_snapshot_func(struct protoent *, char *);
+
+static int protoent_check_ambiguity(struct protoent_test_data *,
+ struct protoent *);
+static int protoent_fill_test_data(struct protoent_test_data *);
+static int protoent_test_correctness(struct protoent *, void *);
+static int protoent_test_getprotobyname(struct protoent *, void *);
+static int protoent_test_getprotobynumber(struct protoent *, void *);
+static int protoent_test_getprotoent(struct protoent *, void *);
+
+static void usage(void) __attribute__((__noreturn__));
+
+IMPLEMENT_TEST_DATA(protoent)
+IMPLEMENT_TEST_FILE_SNAPSHOT(protoent)
+IMPLEMENT_1PASS_TEST(protoent)
+IMPLEMENT_2PASS_TEST(protoent)
+
+static void
+clone_protoent(struct protoent *dest, struct protoent const *src)
+{
+ assert(dest != NULL);
+ assert(src != NULL);
+
+ char **cp;
+ int aliases_num;
+
+ memset(dest, 0, sizeof(struct protoent));
+
+ if (src->p_name != NULL) {
+ dest->p_name = strdup(src->p_name);
+ assert(dest->p_name != NULL);
+ }
+
+ dest->p_proto = src->p_proto;
+
+ if (src->p_aliases != NULL) {
+ aliases_num = 0;
+ for (cp = src->p_aliases; *cp; ++cp)
+ ++aliases_num;
+
+ dest->p_aliases = (char **)malloc((aliases_num+1) * (sizeof(char *)));
+ assert(dest->p_aliases != NULL);
+ memset(dest->p_aliases, 0, (aliases_num+1) * (sizeof(char *)));
+
+ for (cp = src->p_aliases; *cp; ++cp) {
+ dest->p_aliases[cp - src->p_aliases] = strdup(*cp);
+ assert(dest->p_aliases[cp - src->p_aliases] != NULL);
+ }
+ }
+}
+
+static void
+free_protoent(struct protoent *pe)
+{
+ char **cp;
+
+ assert(pe != NULL);
+
+ free(pe->p_name);
+
+ for (cp = pe->p_aliases; *cp; ++cp)
+ free(*cp);
+ free(pe->p_aliases);
+}
+
+static int
+compare_protoent(struct protoent *pe1, struct protoent *pe2, void *mdata)
+{
+ char **c1, **c2;
+
+ if (pe1 == pe2)
+ return 0;
+
+ if ((pe1 == NULL) || (pe2 == NULL))
+ goto errfin;
+
+ if ((strcmp(pe1->p_name, pe2->p_name) != 0) ||
+ (pe1->p_proto != pe2->p_proto))
+ goto errfin;
+
+ c1 = pe1->p_aliases;
+ c2 = pe2->p_aliases;
+
+ if ((pe1->p_aliases == NULL) || (pe2->p_aliases == NULL))
+ goto errfin;
+
+ for (;*c1 && *c2; ++c1, ++c2)
+ if (strcmp(*c1, *c2) != 0)
+ goto errfin;
+
+ if ((*c1 != '\0') || (*c2 != '\0'))
+ goto errfin;
+
+ return 0;
+
+errfin:
+ if ((debug) && (mdata == NULL)) {
+ printf("following structures are not equal:\n");
+ dump_protoent(pe1);
+ dump_protoent(pe2);
+ }
+
+ return (-1);
+}
+
+static void
+sdump_protoent(struct protoent *pe, char *buffer, size_t buflen)
+{
+ char **cp;
+ int written;
+
+ written = snprintf(buffer, buflen, "%s %d",
+ pe->p_name, pe->p_proto);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (pe->p_aliases != NULL) {
+ if (*(pe->p_aliases) != '\0') {
+ for (cp = pe->p_aliases; *cp; ++cp) {
+ written = snprintf(buffer, buflen, " %s",*cp);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (buflen == 0)
+ return;
+ }
+ } else
+ snprintf(buffer, buflen, " noaliases");
+ } else
+ snprintf(buffer, buflen, " (null)");
+}
+
+static int
+protoent_read_snapshot_func(struct protoent *pe, char *line)
+{
+ StringList *sl;
+ char *s, *ps, *ts;
+ int i;
+
+ if (debug)
+ printf("1 line read from snapshot:\n%s\n", line);
+
+ i = 0;
+ sl = NULL;
+ ps = line;
+ memset(pe, 0, sizeof(struct protoent));
+ while ( (s = strsep(&ps, " ")) != NULL) {
+ switch (i) {
+ case 0:
+ pe->p_name = strdup(s);
+ assert(pe->p_name != NULL);
+ break;
+
+ case 1:
+ pe->p_proto = (int)strtol(s, &ts, 10);
+ if (*ts != '\0') {
+ free(pe->p_name);
+ return (-1);
+ }
+ break;
+
+ default:
+ if (sl == NULL) {
+ if (strcmp(s, "(null)") == 0)
+ return (0);
+
+ sl = sl_init();
+ assert(sl != NULL);
+
+ if (strcmp(s, "noaliases") != 0) {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl, ts);
+ }
+ } else {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl, ts);
+ }
+ break;
+ };
+ ++i;
+ }
+
+ if (i < 3) {
+ free(pe->p_name);
+ memset(pe, 0, sizeof(struct protoent));
+ return (-1);
+ }
+
+ sl_add(sl, NULL);
+ pe->p_aliases = sl->sl_str;
+
+ /* NOTE: is it a dirty hack or not? */
+ free(sl);
+ return (0);
+}
+
+static void
+dump_protoent(struct protoent *result)
+{
+ if (result != NULL) {
+ char buffer[1024];
+ sdump_protoent(result, buffer, sizeof(buffer));
+ printf("%s\n", buffer);
+ } else
+ printf("(null)\n");
+}
+
+static int
+protoent_fill_test_data(struct protoent_test_data *td)
+{
+ struct protoent *pe;
+
+ setprotoent(1);
+ while ((pe = getprotoent()) != NULL) {
+ if (protoent_test_correctness(pe, NULL) == 0)
+ TEST_DATA_APPEND(protoent, td, pe);
+ else
+ return (-1);
+ }
+ endprotoent();
+
+ return (0);
+}
+
+static int
+protoent_test_correctness(struct protoent *pe, void *mdata)
+{
+ if (debug) {
+ printf("testing correctness with the following data:\n");
+ dump_protoent(pe);
+ }
+
+ if (pe == NULL)
+ goto errfin;
+
+ if (pe->p_name == NULL)
+ goto errfin;
+
+ if (pe->p_proto < 0)
+ goto errfin;
+
+ if (pe->p_aliases == NULL)
+ goto errfin;
+
+ if (debug)
+ printf("correct\n");
+
+ return (0);
+errfin:
+ if (debug)
+ printf("incorrect\n");
+
+ return (-1);
+}
+
+/* protoent_check_ambiguity() is needed when one port+proto is associated with
+ * more than one peice (these cases are usually marked as PROBLEM in
+ * /etc/peices. This functions is needed also when one peice+proto is
+ * associated with several ports. We have to check all the protoent structures
+ * to make sure that pe really exists and correct */
+static int
+protoent_check_ambiguity(struct protoent_test_data *td, struct protoent *pe)
+{
+
+ return (TEST_DATA_FIND(protoent, td, pe, compare_protoent,
+ NULL) != NULL ? 0 : -1);
+}
+
+static int
+protoent_test_getprotobyname(struct protoent *pe_model, void *mdata)
+{
+ char **alias;
+ struct protoent *pe;
+
+ if (debug) {
+ printf("testing getprotobyname() with the following data:\n");
+ dump_protoent(pe_model);
+ }
+
+ pe = getprotobyname(pe_model->p_name);
+ if (protoent_test_correctness(pe, NULL) != 0)
+ goto errfin;
+
+ if ((compare_protoent(pe, pe_model, NULL) != 0) &&
+ (protoent_check_ambiguity((struct protoent_test_data *)mdata, pe)
+ !=0))
+ goto errfin;
+
+ for (alias = pe_model->p_aliases; *alias; ++alias) {
+ pe = getprotobyname(*alias);
+
+ if (protoent_test_correctness(pe, NULL) != 0)
+ goto errfin;
+
+ if ((compare_protoent(pe, pe_model, NULL) != 0) &&
+ (protoent_check_ambiguity(
+ (struct protoent_test_data *)mdata, pe) != 0))
+ goto errfin;
+ }
+
+ if (debug)
+ printf("ok\n");
+ return (0);
+
+errfin:
+ if (debug)
+ printf("not ok\n");
+
+ return (-1);
+}
+
+static int
+protoent_test_getprotobynumber(struct protoent *pe_model, void *mdata)
+{
+ struct protoent *pe;
+
+ if (debug) {
+ printf("testing getprotobyport() with the following data...\n");
+ dump_protoent(pe_model);
+ }
+
+ pe = getprotobynumber(pe_model->p_proto);
+ if ((protoent_test_correctness(pe, NULL) != 0) ||
+ ((compare_protoent(pe, pe_model, NULL) != 0) &&
+ (protoent_check_ambiguity((struct protoent_test_data *)mdata, pe)
+ != 0))) {
+ if (debug)
+ printf("not ok\n");
+ return (-1);
+ } else {
+ if (debug)
+ printf("ok\n");
+ return (0);
+ }
+}
+
+static int
+protoent_test_getprotoent(struct protoent *pe, void *mdata)
+{
+ /* Only correctness can be checked when doing 1-pass test for
+ * getprotoent(). */
+ return (protoent_test_correctness(pe, NULL));
+}
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr,
+ "Usage: %s -nve2 [-d] [-s <file>]\n",
+ getprogname());
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct protoent_test_data td, td_snap, td_2pass;
+ char *snapshot_file;
+ int rv;
+ int c;
+
+ if (argc < 2)
+ usage();
+
+ snapshot_file = NULL;
+ while ((c = getopt(argc, argv, "nve2ds:")) != -1)
+ switch (c) {
+ case 'd':
+ debug++;
+ break;
+ case 'n':
+ method = TEST_GETPROTOBYNAME;
+ break;
+ case 'v':
+ method = TEST_GETPROTOBYNUMBER;
+ break;
+ case 'e':
+ method = TEST_GETPROTOENT;
+ break;
+ case '2':
+ method = TEST_GETPROTOENT_2PASS;
+ break;
+ case 's':
+ snapshot_file = strdup(optarg);
+ break;
+ default:
+ usage();
+ }
+
+ TEST_DATA_INIT(protoent, &td, clone_protoent, free_protoent);
+ TEST_DATA_INIT(protoent, &td_snap, clone_protoent, free_protoent);
+ if (snapshot_file != NULL) {
+ if (access(snapshot_file, W_OK | R_OK) != 0) {
+ if (errno == ENOENT)
+ method = TEST_BUILD_SNAPSHOT;
+ else {
+ if (debug)
+ printf("can't access the file %s\n",
+ snapshot_file);
+
+ rv = -1;
+ goto fin;
+ }
+ } else {
+ if (method == TEST_BUILD_SNAPSHOT) {
+ rv = 0;
+ goto fin;
+ }
+
+ TEST_SNAPSHOT_FILE_READ(protoent, snapshot_file,
+ &td_snap, protoent_read_snapshot_func);
+ }
+ }
+
+ rv = protoent_fill_test_data(&td);
+ if (rv == -1)
+ return (-1);
+ switch (method) {
+ case TEST_GETPROTOBYNAME:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(protoent, &td,
+ protoent_test_getprotobyname, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(protoent, &td_snap,
+ protoent_test_getprotobyname, (void *)&td_snap);
+ break;
+ case TEST_GETPROTOBYNUMBER:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(protoent, &td,
+ protoent_test_getprotobynumber, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(protoent, &td_snap,
+ protoent_test_getprotobynumber, (void *)&td_snap);
+ break;
+ case TEST_GETPROTOENT:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(protoent, &td,
+ protoent_test_getprotoent, (void *)&td);
+ else
+ rv = DO_2PASS_TEST(protoent, &td, &td_snap,
+ compare_protoent, NULL);
+ break;
+ case TEST_GETPROTOENT_2PASS:
+ TEST_DATA_INIT(protoent, &td_2pass, clone_protoent,
+ free_protoent);
+ rv = protoent_fill_test_data(&td_2pass);
+ if (rv != -1)
+ rv = DO_2PASS_TEST(protoent, &td, &td_2pass,
+ compare_protoent, NULL);
+ TEST_DATA_DESTROY(protoent, &td_2pass);
+ break;
+ case TEST_BUILD_SNAPSHOT:
+ if (snapshot_file != NULL)
+ rv = TEST_SNAPSHOT_FILE_WRITE(protoent, snapshot_file, &td,
+ sdump_protoent);
+ break;
+ default:
+ rv = 0;
+ break;
+ };
+
+fin:
+ TEST_DATA_DESTROY(protoent, &td_snap);
+ TEST_DATA_DESTROY(protoent, &td);
+ free(snapshot_file);
+ return (rv);
+}
diff --git a/tools/regression/lib/libc/nss/test-getproto.t b/tools/regression/lib/libc/nss/test-getproto.t
new file mode 100644
index 0000000..f582d31
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getproto.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+do_test() {
+ number=$1
+ comment=$2
+ opt=$3
+ if ./$executable $opt; then
+ echo "ok $number - $comment"
+ else
+ echo "not ok $number - $comment"
+ fi
+}
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..8
+do_test 1 'getprotobyname()' '-n'
+do_test 2 'getprotobynumber()' '-v'
+do_test 3 'getprotoent()' '-e'
+do_test 4 'getprotoent() 2-pass' '-2'
+do_test 5 'building snapshot, if needed' '-s snapshot_proto'
+do_test 6 'getprotobyname() snapshot' '-n -s snapshot_proto'
+do_test 7 'getprotobynumber() snapshot' '-v -s snapshot_proto'
+do_test 8 'getprotoent() snapshot' '-e -s snapshot_proto'
diff --git a/tools/regression/lib/libc/nss/test-getpw.c b/tools/regression/lib/libc/nss/test-getpw.c
new file mode 100644
index 0000000..88277d3
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getpw.c
@@ -0,0 +1,489 @@
+/*-
+ * Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
+ * All rights repwded.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <pwd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "testutil.h"
+
+enum test_methods {
+ TEST_GETPWENT,
+ TEST_GETPWNAM,
+ TEST_GETPWUID,
+ TEST_GETPWENT_2PASS,
+ TEST_BUILD_SNAPSHOT
+};
+
+static int debug = 0;
+static enum test_methods method = TEST_BUILD_SNAPSHOT;
+
+DECLARE_TEST_DATA(passwd)
+DECLARE_TEST_FILE_SNAPSHOT(passwd)
+DECLARE_1PASS_TEST(passwd)
+DECLARE_2PASS_TEST(passwd)
+
+static void clone_passwd(struct passwd *, struct passwd const *);
+static int compare_passwd(struct passwd *, struct passwd *, void *);
+static void free_passwd(struct passwd *);
+
+static void sdump_passwd(struct passwd *, char *, size_t);
+static void dump_passwd(struct passwd *);
+
+static int passwd_read_snapshot_func(struct passwd *, char *);
+
+static int passwd_check_ambiguity(struct passwd_test_data *, struct passwd *);
+static int passwd_fill_test_data(struct passwd_test_data *);
+static int passwd_test_correctness(struct passwd *, void *);
+static int passwd_test_getpwnam(struct passwd *, void *);
+static int passwd_test_getpwuid(struct passwd *, void *);
+static int passwd_test_getpwent(struct passwd *, void *);
+
+static void usage(void) __attribute__((__noreturn__));
+
+IMPLEMENT_TEST_DATA(passwd)
+IMPLEMENT_TEST_FILE_SNAPSHOT(passwd)
+IMPLEMENT_1PASS_TEST(passwd)
+IMPLEMENT_2PASS_TEST(passwd)
+
+static void
+clone_passwd(struct passwd *dest, struct passwd const *src)
+{
+ assert(dest != NULL);
+ assert(src != NULL);
+
+ memcpy(dest, src, sizeof(struct passwd));
+ if (src->pw_name != NULL)
+ dest->pw_name = strdup(src->pw_name);
+ if (src->pw_passwd != NULL)
+ dest->pw_passwd = strdup(src->pw_passwd);
+ if (src->pw_class != NULL)
+ dest->pw_class = strdup(src->pw_class);
+ if (src->pw_gecos != NULL)
+ dest->pw_gecos = strdup(src->pw_gecos);
+ if (src->pw_dir != NULL)
+ dest->pw_dir = strdup(src->pw_dir);
+ if (src->pw_shell != NULL)
+ dest->pw_shell = strdup(dest->pw_shell);
+}
+
+static int
+compare_passwd(struct passwd *pwd1, struct passwd *pwd2, void *mdata)
+{
+ assert(pwd1 != NULL);
+ assert(pwd2 != NULL);
+
+ if (pwd1 == pwd2)
+ return (0);
+
+ if ((pwd1->pw_uid != pwd2->pw_uid) ||
+ (pwd1->pw_gid != pwd2->pw_gid) ||
+ (pwd1->pw_change != pwd2->pw_change) ||
+ (pwd1->pw_expire != pwd2->pw_expire) ||
+ (pwd1->pw_fields != pwd2->pw_fields) ||
+ (strcmp(pwd1->pw_name, pwd2->pw_name) != 0) ||
+ (strcmp(pwd1->pw_passwd, pwd2->pw_passwd) != 0) ||
+ (strcmp(pwd1->pw_class, pwd2->pw_class) != 0) ||
+ (strcmp(pwd1->pw_gecos, pwd2->pw_gecos) != 0) ||
+ (strcmp(pwd1->pw_dir, pwd2->pw_dir) != 0) ||
+ (strcmp(pwd1->pw_shell, pwd2->pw_shell) != 0)
+ )
+ return (-1);
+ else
+ return (0);
+}
+
+static void
+free_passwd(struct passwd *pwd)
+{
+ free(pwd->pw_name);
+ free(pwd->pw_passwd);
+ free(pwd->pw_class);
+ free(pwd->pw_gecos);
+ free(pwd->pw_dir);
+ free(pwd->pw_shell);
+}
+
+static void
+sdump_passwd(struct passwd *pwd, char *buffer, size_t buflen)
+{
+ snprintf(buffer, buflen, "%s:%s:%d:%d:%d:%s:%s:%s:%s:%d:%d",
+ pwd->pw_name, pwd->pw_passwd, pwd->pw_uid, pwd->pw_gid,
+ pwd->pw_change, pwd->pw_class, pwd->pw_gecos, pwd->pw_dir,
+ pwd->pw_shell, pwd->pw_expire, pwd->pw_fields);
+}
+
+static void
+dump_passwd(struct passwd *pwd)
+{
+ if (pwd != NULL) {
+ char buffer[2048];
+ sdump_passwd(pwd, buffer, sizeof(buffer));
+ printf("%s\n", buffer);
+ } else
+ printf("(null)\n");
+}
+
+static int
+passwd_read_snapshot_func(struct passwd *pwd, char *line)
+{
+ char *s, *ps, *ts;
+ int i;
+
+ if (debug)
+ printf("1 line read from snapshot:\n%s\n", line);
+
+ i = 0;
+ ps = line;
+ memset(pwd, 0, sizeof(struct passwd));
+ while ( (s = strsep(&ps, ":")) != NULL) {
+ switch (i) {
+ case 0:
+ pwd->pw_name = strdup(s);
+ assert(pwd->pw_name != NULL);
+ break;
+ case 1:
+ pwd->pw_passwd = strdup(s);
+ assert(pwd->pw_passwd != NULL);
+ break;
+ case 2:
+ pwd->pw_uid = (uid_t)strtol(s, &ts, 10);
+ if (*ts != '\0')
+ goto fin;
+ break;
+ case 3:
+ pwd->pw_gid = (gid_t)strtol(s, &ts, 10);
+ if (*ts != '\0')
+ goto fin;
+ break;
+ case 4:
+ pwd->pw_change = (time_t)strtol(s, &ts, 10);
+ if (*ts != '\0')
+ goto fin;
+ break;
+ case 5:
+ pwd->pw_class = strdup(s);
+ assert(pwd->pw_class != NULL);
+ break;
+ case 6:
+ pwd->pw_gecos = strdup(s);
+ assert(pwd->pw_gecos != NULL);
+ break;
+ case 7:
+ pwd->pw_dir = strdup(s);
+ assert(pwd->pw_dir != NULL);
+ break;
+ case 8:
+ pwd->pw_shell = strdup(s);
+ assert(pwd->pw_shell != NULL);
+ break;
+ case 9:
+ pwd->pw_expire = (time_t)strtol(s, &ts, 10);
+ if (*ts != '\0')
+ goto fin;
+ break;
+ case 10:
+ pwd->pw_fields = (int)strtol(s, &ts, 10);
+ if (*ts != '\0')
+ goto fin;
+ break;
+ default:
+ break;
+ };
+ ++i;
+ }
+
+fin:
+ if (i != 11) {
+ free_passwd(pwd);
+ memset(pwd, 0, sizeof(struct passwd));
+ return (-1);
+ }
+
+ return (0);
+}
+
+static int
+passwd_fill_test_data(struct passwd_test_data *td)
+{
+ struct passwd *pwd;
+
+ setpassent(1);
+ while ((pwd = getpwent()) != NULL) {
+ if (passwd_test_correctness(pwd, NULL) == 0)
+ TEST_DATA_APPEND(passwd, td, pwd);
+ else
+ return (-1);
+ }
+ endpwent();
+
+ return (0);
+}
+
+static int
+passwd_test_correctness(struct passwd *pwd, void *mdata)
+{
+ if (debug) {
+ printf("testing correctness with the following data:\n");
+ dump_passwd(pwd);
+ }
+
+ if (pwd == NULL)
+ return (-1);
+
+ if (pwd->pw_name == NULL)
+ goto errfin;
+
+ if (pwd->pw_passwd == NULL)
+ goto errfin;
+
+ if (pwd->pw_class == NULL)
+ goto errfin;
+
+ if (pwd->pw_gecos == NULL)
+ goto errfin;
+
+ if (pwd->pw_dir == NULL)
+ goto errfin;
+
+ if (pwd->pw_shell == NULL)
+ goto errfin;
+
+ if (debug)
+ printf("correct\n");
+
+ return (0);
+errfin:
+ if (debug)
+ printf("incorrect\n");
+
+ return (-1);
+}
+
+/* passwd_check_ambiguity() is needed here because when doing the getpwent()
+ * calls sequence, records from different nsswitch sources can be different,
+ * though having the same pw_name/pw_uid */
+static int
+passwd_check_ambiguity(struct passwd_test_data *td, struct passwd *pwd)
+{
+
+ return (TEST_DATA_FIND(passwd, td, pwd, compare_passwd,
+ NULL) != NULL ? 0 : -1);
+}
+
+static int
+passwd_test_getpwnam(struct passwd *pwd_model, void *mdata)
+{
+ struct passwd *pwd;
+
+ if (debug) {
+ printf("testing getpwnam() with the following data:\n");
+ dump_passwd(pwd_model);
+ }
+
+ pwd = getpwnam(pwd_model->pw_name);
+ if (passwd_test_correctness(pwd, NULL) != 0)
+ goto errfin;
+
+ if ((compare_passwd(pwd, pwd_model, NULL) != 0) &&
+ (passwd_check_ambiguity((struct passwd_test_data *)mdata, pwd)
+ !=0))
+ goto errfin;
+
+ if (debug)
+ printf("ok\n");
+ return (0);
+
+errfin:
+ if (debug)
+ printf("not ok\n");
+
+ return (-1);
+}
+
+static int
+passwd_test_getpwuid(struct passwd *pwd_model, void *mdata)
+{
+ struct passwd *pwd;
+
+ if (debug) {
+ printf("testing getpwuid() with the following data...\n");
+ dump_passwd(pwd_model);
+ }
+
+ pwd = getpwuid(pwd_model->pw_uid);
+ if ((passwd_test_correctness(pwd, NULL) != 0) ||
+ ((compare_passwd(pwd, pwd_model, NULL) != 0) &&
+ (passwd_check_ambiguity((struct passwd_test_data *)mdata, pwd)
+ != 0))) {
+ if (debug)
+ printf("not ok\n");
+ return (-1);
+ } else {
+ if (debug)
+ printf("ok\n");
+ return (0);
+ }
+}
+
+static int
+passwd_test_getpwent(struct passwd *pwd, void *mdata)
+{
+ /* Only correctness can be checked when doing 1-pass test for
+ * getpwent(). */
+ return (passwd_test_correctness(pwd, NULL));
+}
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr,
+ "Usage: %s -nue2 [-d] [-s <file>]\n",
+ getprogname());
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct passwd_test_data td, td_snap, td_2pass;
+ char *snapshot_file;
+ int rv;
+ int c;
+
+ if (argc < 2)
+ usage();
+
+ snapshot_file = NULL;
+ while ((c = getopt(argc, argv, "nue2ds:")) != -1)
+ switch (c) {
+ case 'd':
+ debug++;
+ break;
+ case 'n':
+ method = TEST_GETPWNAM;
+ break;
+ case 'u':
+ method = TEST_GETPWUID;
+ break;
+ case 'e':
+ method = TEST_GETPWENT;
+ break;
+ case '2':
+ method = TEST_GETPWENT_2PASS;
+ break;
+ case 's':
+ snapshot_file = strdup(optarg);
+ break;
+ default:
+ usage();
+ }
+
+ TEST_DATA_INIT(passwd, &td, clone_passwd, free_passwd);
+ TEST_DATA_INIT(passwd, &td_snap, clone_passwd, free_passwd);
+ if (snapshot_file != NULL) {
+ if (access(snapshot_file, W_OK | R_OK) != 0) {
+ if (errno == ENOENT)
+ method = TEST_BUILD_SNAPSHOT;
+ else {
+ if (debug)
+ printf("can't access the file %s\n",
+ snapshot_file);
+
+ rv = -1;
+ goto fin;
+ }
+ } else {
+ if (method == TEST_BUILD_SNAPSHOT) {
+ rv = 0;
+ goto fin;
+ }
+
+ TEST_SNAPSHOT_FILE_READ(passwd, snapshot_file,
+ &td_snap, passwd_read_snapshot_func);
+ }
+ }
+
+ rv = passwd_fill_test_data(&td);
+ if (rv == -1)
+ return (-1);
+
+ switch (method) {
+ case TEST_GETPWNAM:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(passwd, &td,
+ passwd_test_getpwnam, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(passwd, &td_snap,
+ passwd_test_getpwnam, (void *)&td_snap);
+ break;
+ case TEST_GETPWUID:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(passwd, &td,
+ passwd_test_getpwuid, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(passwd, &td_snap,
+ passwd_test_getpwuid, (void *)&td_snap);
+ break;
+ case TEST_GETPWENT:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(passwd, &td, passwd_test_getpwent,
+ (void *)&td);
+ else
+ rv = DO_2PASS_TEST(passwd, &td, &td_snap,
+ compare_passwd, NULL);
+ break;
+ case TEST_GETPWENT_2PASS:
+ TEST_DATA_INIT(passwd, &td_2pass, clone_passwd, free_passwd);
+ rv = passwd_fill_test_data(&td_2pass);
+ if (rv != -1)
+ rv = DO_2PASS_TEST(passwd, &td, &td_2pass,
+ compare_passwd, NULL);
+ TEST_DATA_DESTROY(passwd, &td_2pass);
+ break;
+ case TEST_BUILD_SNAPSHOT:
+ if (snapshot_file != NULL)
+ rv = TEST_SNAPSHOT_FILE_WRITE(passwd, snapshot_file, &td,
+ sdump_passwd);
+ break;
+ default:
+ rv = 0;
+ break;
+ };
+
+fin:
+ TEST_DATA_DESTROY(passwd, &td_snap);
+ TEST_DATA_DESTROY(passwd, &td);
+ free(snapshot_file);
+ return (rv);
+}
diff --git a/tools/regression/lib/libc/nss/test-getpw.t b/tools/regression/lib/libc/nss/test-getpw.t
new file mode 100644
index 0000000..5172177
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getpw.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+do_test() {
+ number=$1
+ comment=$2
+ opt=$3
+ if ./$executable $opt; then
+ echo "ok $number - $comment"
+ else
+ echo "not ok $number - $comment"
+ fi
+}
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..8
+do_test 1 'getpwnam()' '-n'
+do_test 2 'getpwuid()' '-u'
+do_test 3 'getpwent()' '-e'
+do_test 4 'getpwent() 2-pass' '-2'
+do_test 5 'building snapshot, if needed' '-s snapshot_pwd'
+do_test 6 'getpwnam() snapshot' '-n -s snapshot_pwd'
+do_test 7 'getpwuid() snapshot' '-u -s snapshot_pwd'
+do_test 8 'getpwent() snapshot' '-e -s snapshot_pwd'
diff --git a/tools/regression/lib/libc/nss/test-getrpc.c b/tools/regression/lib/libc/nss/test-getrpc.c
new file mode 100644
index 0000000..df0bc83
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getrpc.c
@@ -0,0 +1,535 @@
+/*-
+ * Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
+ * All rights repeed.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <arpa/inet.h>
+#include <rpc/rpc.h>
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stringlist.h>
+#include <unistd.h>
+#include "testutil.h"
+
+enum test_methods {
+ TEST_GETRPCENT,
+ TEST_GETRPCBYNAME,
+ TEST_GETRPCBYNUMBER,
+ TEST_GETRPCENT_2PASS,
+ TEST_BUILD_SNAPSHOT
+};
+
+static int debug = 0;
+static enum test_methods method = TEST_BUILD_SNAPSHOT;
+
+DECLARE_TEST_DATA(rpcent)
+DECLARE_TEST_FILE_SNAPSHOT(rpcent)
+DECLARE_1PASS_TEST(rpcent)
+DECLARE_2PASS_TEST(rpcent)
+
+static void clone_rpcent(struct rpcent *, struct rpcent const *);
+static int compare_rpcent(struct rpcent *, struct rpcent *, void *);
+static void dump_rpcent(struct rpcent *);
+static void free_rpcent(struct rpcent *);
+
+static void sdump_rpcent(struct rpcent *, char *, size_t);
+static int rpcent_read_snapshot_func(struct rpcent *, char *);
+
+static int rpcent_check_ambiguity(struct rpcent_test_data *,
+ struct rpcent *);
+static int rpcent_fill_test_data(struct rpcent_test_data *);
+static int rpcent_test_correctness(struct rpcent *, void *);
+static int rpcent_test_getrpcbyname(struct rpcent *, void *);
+static int rpcent_test_getrpcbynumber(struct rpcent *, void *);
+static int rpcent_test_getrpcent(struct rpcent *, void *);
+
+static void usage(void) __attribute__((__noreturn__));
+
+IMPLEMENT_TEST_DATA(rpcent)
+IMPLEMENT_TEST_FILE_SNAPSHOT(rpcent)
+IMPLEMENT_1PASS_TEST(rpcent)
+IMPLEMENT_2PASS_TEST(rpcent)
+
+static void
+clone_rpcent(struct rpcent *dest, struct rpcent const *src)
+{
+ assert(dest != NULL);
+ assert(src != NULL);
+
+ char **cp;
+ int aliases_num;
+
+ memset(dest, 0, sizeof(struct rpcent));
+
+ if (src->r_name != NULL) {
+ dest->r_name = strdup(src->r_name);
+ assert(dest->r_name != NULL);
+ }
+
+ dest->r_number = src->r_number;
+
+ if (src->r_aliases != NULL) {
+ aliases_num = 0;
+ for (cp = src->r_aliases; *cp; ++cp)
+ ++aliases_num;
+
+ dest->r_aliases = (char **)malloc((aliases_num+1) * (sizeof(char *)));
+ assert(dest->r_aliases != NULL);
+ memset(dest->r_aliases, 0, (aliases_num+1) * (sizeof(char *)));
+
+ for (cp = src->r_aliases; *cp; ++cp) {
+ dest->r_aliases[cp - src->r_aliases] = strdup(*cp);
+ assert(dest->r_aliases[cp - src->r_aliases] != NULL);
+ }
+ }
+}
+
+static void
+free_rpcent(struct rpcent *rpc)
+{
+ char **cp;
+
+ assert(rpc != NULL);
+
+ free(rpc->r_name);
+
+ for (cp = rpc->r_aliases; *cp; ++cp)
+ free(*cp);
+ free(rpc->r_aliases);
+}
+
+static int
+compare_rpcent(struct rpcent *rpc1, struct rpcent *rpc2, void *mdata)
+{
+ char **c1, **c2;
+
+ if (rpc1 == rpc2)
+ return 0;
+
+ if ((rpc1 == NULL) || (rpc2 == NULL))
+ goto errfin;
+
+ if ((strcmp(rpc1->r_name, rpc2->r_name) != 0) ||
+ (rpc1->r_number != rpc2->r_number))
+ goto errfin;
+
+ c1 = rpc1->r_aliases;
+ c2 = rpc2->r_aliases;
+
+ if ((rpc1->r_aliases == NULL) || (rpc2->r_aliases == NULL))
+ goto errfin;
+
+ for (;*c1 && *c2; ++c1, ++c2)
+ if (strcmp(*c1, *c2) != 0)
+ goto errfin;
+
+ if ((*c1 != '\0') || (*c2 != '\0'))
+ goto errfin;
+
+ return 0;
+
+errfin:
+ if ((debug) && (mdata == NULL)) {
+ printf("following structures are not equal:\n");
+ dump_rpcent(rpc1);
+ dump_rpcent(rpc2);
+ }
+
+ return (-1);
+}
+
+static void
+sdump_rpcent(struct rpcent *rpc, char *buffer, size_t buflen)
+{
+ char **cp;
+ int written;
+
+ written = snprintf(buffer, buflen, "%s %d",
+ rpc->r_name, rpc->r_number);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (rpc->r_aliases != NULL) {
+ if (*(rpc->r_aliases) != '\0') {
+ for (cp = rpc->r_aliases; *cp; ++cp) {
+ written = snprintf(buffer, buflen, " %s",*cp);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (buflen == 0)
+ return;
+ }
+ } else
+ snprintf(buffer, buflen, " noaliases");
+ } else
+ snprintf(buffer, buflen, " (null)");
+}
+
+static int
+rpcent_read_snapshot_func(struct rpcent *rpc, char *line)
+{
+ StringList *sl;
+ char *s, *ps, *ts;
+ int i;
+
+ if (debug)
+ printf("1 line read from snapshot:\n%s\n", line);
+
+ i = 0;
+ sl = NULL;
+ ps = line;
+ memset(rpc, 0, sizeof(struct rpcent));
+ while ( (s = strsep(&ps, " ")) != NULL) {
+ switch (i) {
+ case 0:
+ rpc->r_name = strdup(s);
+ assert(rpc->r_name != NULL);
+ break;
+
+ case 1:
+ rpc->r_number = (int)strtol(s, &ts, 10);
+ if (*ts != '\0') {
+ free(rpc->r_name);
+ return (-1);
+ }
+ break;
+
+ default:
+ if (sl == NULL) {
+ if (strcmp(s, "(null)") == 0)
+ return (0);
+
+ sl = sl_init();
+ assert(sl != NULL);
+
+ if (strcmp(s, "noaliases") != 0) {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl, ts);
+ }
+ } else {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl, ts);
+ }
+ break;
+ };
+ ++i;
+ }
+
+ if (i < 3) {
+ free(rpc->r_name);
+ memset(rpc, 0, sizeof(struct rpcent));
+ return (-1);
+ }
+
+ sl_add(sl, NULL);
+ rpc->r_aliases = sl->sl_str;
+
+ /* NOTE: is it a dirty hack or not? */
+ free(sl);
+ return (0);
+}
+
+static void
+dump_rpcent(struct rpcent *result)
+{
+ if (result != NULL) {
+ char buffer[1024];
+ sdump_rpcent(result, buffer, sizeof(buffer));
+ printf("%s\n", buffer);
+ } else
+ printf("(null)\n");
+}
+
+static int
+rpcent_fill_test_data(struct rpcent_test_data *td)
+{
+ struct rpcent *rpc;
+
+ setrpcent(1);
+ while ((rpc = getrpcent()) != NULL) {
+ if (rpcent_test_correctness(rpc, NULL) == 0)
+ TEST_DATA_APPEND(rpcent, td, rpc);
+ else
+ return (-1);
+ }
+ endrpcent();
+
+ return (0);
+}
+
+static int
+rpcent_test_correctness(struct rpcent *rpc, void *mdata)
+{
+ if (debug) {
+ printf("testing correctness with the following data:\n");
+ dump_rpcent(rpc);
+ }
+
+ if (rpc == NULL)
+ goto errfin;
+
+ if (rpc->r_name == NULL)
+ goto errfin;
+
+ if (rpc->r_number < 0)
+ goto errfin;
+
+ if (rpc->r_aliases == NULL)
+ goto errfin;
+
+ if (debug)
+ printf("correct\n");
+
+ return (0);
+errfin:
+ if (debug)
+ printf("incorrect\n");
+
+ return (-1);
+}
+
+/* rpcent_check_ambiguity() is needed when one port+rpc is associated with
+ * more than one peice (these cases are usually marked as PROBLEM in
+ * /etc/peices. This functions is needed also when one peice+rpc is
+ * associated with several ports. We have to check all the rpcent structures
+ * to make sure that rpc really exists and correct */
+static int
+rpcent_check_ambiguity(struct rpcent_test_data *td, struct rpcent *rpc)
+{
+
+ return (TEST_DATA_FIND(rpcent, td, rpc, compare_rpcent,
+ NULL) != NULL ? 0 : -1);
+}
+
+static int
+rpcent_test_getrpcbyname(struct rpcent *rpc_model, void *mdata)
+{
+ char **alias;
+ struct rpcent *rpc;
+
+ if (debug) {
+ printf("testing getrpcbyname() with the following data:\n");
+ dump_rpcent(rpc_model);
+ }
+
+ rpc = getrpcbyname(rpc_model->r_name);
+ if (rpcent_test_correctness(rpc, NULL) != 0)
+ goto errfin;
+
+ if ((compare_rpcent(rpc, rpc_model, NULL) != 0) &&
+ (rpcent_check_ambiguity((struct rpcent_test_data *)mdata, rpc)
+ !=0))
+ goto errfin;
+
+ for (alias = rpc_model->r_aliases; *alias; ++alias) {
+ rpc = getrpcbyname(*alias);
+
+ if (rpcent_test_correctness(rpc, NULL) != 0)
+ goto errfin;
+
+ if ((compare_rpcent(rpc, rpc_model, NULL) != 0) &&
+ (rpcent_check_ambiguity(
+ (struct rpcent_test_data *)mdata, rpc) != 0))
+ goto errfin;
+ }
+
+ if (debug)
+ printf("ok\n");
+ return (0);
+
+errfin:
+ if (debug)
+ printf("not ok\n");
+
+ return (-1);
+}
+
+static int
+rpcent_test_getrpcbynumber(struct rpcent *rpc_model, void *mdata)
+{
+ struct rpcent *rpc;
+
+ if (debug) {
+ printf("testing getrpcbyport() with the following data...\n");
+ dump_rpcent(rpc_model);
+ }
+
+ rpc = getrpcbynumber(rpc_model->r_number);
+ if ((rpcent_test_correctness(rpc, NULL) != 0) ||
+ ((compare_rpcent(rpc, rpc_model, NULL) != 0) &&
+ (rpcent_check_ambiguity((struct rpcent_test_data *)mdata, rpc)
+ != 0))) {
+ if (debug)
+ printf("not ok\n");
+ return (-1);
+ } else {
+ if (debug)
+ printf("ok\n");
+ return (0);
+ }
+}
+
+static int
+rpcent_test_getrpcent(struct rpcent *rpc, void *mdata)
+{
+ /* Only correctness can be checked when doing 1-pass test for
+ * getrpcent(). */
+ return (rpcent_test_correctness(rpc, NULL));
+}
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr,
+ "Usage: %s -nve2 [-d] [-s <file>]\n",
+ getprogname());
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct rpcent_test_data td, td_snap, td_2pass;
+ char *snapshot_file;
+ int rv;
+ int c;
+
+ if (argc < 2)
+ usage();
+
+ snapshot_file = NULL;
+ while ((c = getopt(argc, argv, "nve2ds:")) != -1)
+ switch (c) {
+ case 'd':
+ debug++;
+ break;
+ case 'n':
+ method = TEST_GETRPCBYNAME;
+ break;
+ case 'v':
+ method = TEST_GETRPCBYNUMBER;
+ break;
+ case 'e':
+ method = TEST_GETRPCENT;
+ break;
+ case '2':
+ method = TEST_GETRPCENT_2PASS;
+ break;
+ case 's':
+ snapshot_file = strdup(optarg);
+ break;
+ default:
+ usage();
+ }
+
+ TEST_DATA_INIT(rpcent, &td, clone_rpcent, free_rpcent);
+ TEST_DATA_INIT(rpcent, &td_snap, clone_rpcent, free_rpcent);
+ if (snapshot_file != NULL) {
+ if (access(snapshot_file, W_OK | R_OK) != 0) {
+ if (errno == ENOENT)
+ method = TEST_BUILD_SNAPSHOT;
+ else {
+ if (debug)
+ printf("can't access the file %s\n",
+ snapshot_file);
+
+ rv = -1;
+ goto fin;
+ }
+ } else {
+ if (method == TEST_BUILD_SNAPSHOT) {
+ rv = 0;
+ goto fin;
+ }
+
+ TEST_SNAPSHOT_FILE_READ(rpcent, snapshot_file,
+ &td_snap, rpcent_read_snapshot_func);
+ }
+ }
+
+ rv = rpcent_fill_test_data(&td);
+ if (rv == -1)
+ return (-1);
+ switch (method) {
+ case TEST_GETRPCBYNAME:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(rpcent, &td,
+ rpcent_test_getrpcbyname, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(rpcent, &td_snap,
+ rpcent_test_getrpcbyname, (void *)&td_snap);
+ break;
+ case TEST_GETRPCBYNUMBER:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(rpcent, &td,
+ rpcent_test_getrpcbynumber, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(rpcent, &td_snap,
+ rpcent_test_getrpcbynumber, (void *)&td_snap);
+ break;
+ case TEST_GETRPCENT:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(rpcent, &td, rpcent_test_getrpcent,
+ (void *)&td);
+ else
+ rv = DO_2PASS_TEST(rpcent, &td, &td_snap,
+ compare_rpcent, NULL);
+ break;
+ case TEST_GETRPCENT_2PASS:
+ TEST_DATA_INIT(rpcent, &td_2pass, clone_rpcent, free_rpcent);
+ rv = rpcent_fill_test_data(&td_2pass);
+ if (rv != -1)
+ rv = DO_2PASS_TEST(rpcent, &td, &td_2pass,
+ compare_rpcent, NULL);
+ TEST_DATA_DESTROY(rpcent, &td_2pass);
+ break;
+ case TEST_BUILD_SNAPSHOT:
+ if (snapshot_file != NULL)
+ rv = TEST_SNAPSHOT_FILE_WRITE(rpcent, snapshot_file, &td,
+ sdump_rpcent);
+ break;
+ default:
+ rv = 0;
+ break;
+ };
+
+fin:
+ TEST_DATA_DESTROY(rpcent, &td_snap);
+ TEST_DATA_DESTROY(rpcent, &td);
+ free(snapshot_file);
+ return (rv);
+}
diff --git a/tools/regression/lib/libc/nss/test-getrpc.t b/tools/regression/lib/libc/nss/test-getrpc.t
new file mode 100644
index 0000000..831a086
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getrpc.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+do_test() {
+ number=$1
+ comment=$2
+ opt=$3
+ if ./$executable $opt; then
+ echo "ok $number - $comment"
+ else
+ echo "not ok $number - $comment"
+ fi
+}
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..8
+do_test 1 'getrpcbyname()' '-n'
+do_test 2 'getrpcbynumber()' '-v'
+do_test 3 'getrpcent()' '-e'
+do_test 4 'getrpcent() 2-pass' '-2'
+do_test 5 'building snapshot, if needed' '-s snapshot_rpc'
+do_test 6 'getrpcbyname() snapshot' '-n -s snapshot_rpc'
+do_test 7 'getrpcbynumber() snapshot' '-v -s snapshot_rpc'
+do_test 8 'getrpcent() snapshot' '-e -s snapshot_rpc'
diff --git a/tools/regression/lib/libc/nss/test-getserv.c b/tools/regression/lib/libc/nss/test-getserv.c
new file mode 100644
index 0000000..79d42f0
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getserv.c
@@ -0,0 +1,551 @@
+/*-
+ * Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <arpa/inet.h>
+#include <assert.h>
+#include <errno.h>
+#include <netdb.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stringlist.h>
+#include <unistd.h>
+#include "testutil.h"
+
+enum test_methods {
+ TEST_GETSERVENT,
+ TEST_GETSERVBYNAME,
+ TEST_GETSERVBYPORT,
+ TEST_GETSERVENT_2PASS,
+ TEST_BUILD_SNAPSHOT
+};
+
+static int debug = 0;
+static enum test_methods method = TEST_BUILD_SNAPSHOT;
+
+DECLARE_TEST_DATA(servent)
+DECLARE_TEST_FILE_SNAPSHOT(servent)
+DECLARE_1PASS_TEST(servent)
+DECLARE_2PASS_TEST(servent)
+
+static void clone_servent(struct servent *, struct servent const *);
+static int compare_servent(struct servent *, struct servent *, void *);
+static void dump_servent(struct servent *);
+static void free_servent(struct servent *);
+
+static void sdump_servent(struct servent *, char *, size_t);
+static int servent_read_snapshot_func(struct servent *, char *);
+
+static int servent_check_ambiguity(struct servent_test_data *,
+ struct servent *);
+static int servent_fill_test_data(struct servent_test_data *);
+static int servent_test_correctness(struct servent *, void *);
+static int servent_test_getservbyname(struct servent *, void *);
+static int servent_test_getservbyport(struct servent *, void *);
+static int servent_test_getservent(struct servent *, void *);
+
+static void usage(void) __attribute__((__noreturn__));
+
+IMPLEMENT_TEST_DATA(servent)
+IMPLEMENT_TEST_FILE_SNAPSHOT(servent)
+IMPLEMENT_1PASS_TEST(servent)
+IMPLEMENT_2PASS_TEST(servent)
+
+static void
+clone_servent(struct servent *dest, struct servent const *src)
+{
+ assert(dest != NULL);
+ assert(src != NULL);
+
+ char **cp;
+ int aliases_num;
+
+ memset(dest, 0, sizeof(struct servent));
+
+ if (src->s_name != NULL) {
+ dest->s_name = strdup(src->s_name);
+ assert(dest->s_name != NULL);
+ }
+
+ if (src->s_proto != NULL) {
+ dest->s_proto = strdup(src->s_proto);
+ assert(dest->s_proto != NULL);
+ }
+ dest->s_port = src->s_port;
+
+ if (src->s_aliases != NULL) {
+ aliases_num = 0;
+ for (cp = src->s_aliases; *cp; ++cp)
+ ++aliases_num;
+
+ dest->s_aliases = (char **)malloc((aliases_num+1) * (sizeof(char *)));
+ assert(dest->s_aliases != NULL);
+ memset(dest->s_aliases, 0, (aliases_num+1) * (sizeof(char *)));
+
+ for (cp = src->s_aliases; *cp; ++cp) {
+ dest->s_aliases[cp - src->s_aliases] = strdup(*cp);
+ assert(dest->s_aliases[cp - src->s_aliases] != NULL);
+ }
+ }
+}
+
+static void
+free_servent(struct servent *serv)
+{
+ char **cp;
+
+ assert(serv != NULL);
+
+ free(serv->s_name);
+ free(serv->s_proto);
+
+ for (cp = serv->s_aliases; *cp; ++cp)
+ free(*cp);
+ free(serv->s_aliases);
+}
+
+static int
+compare_servent(struct servent *serv1, struct servent *serv2, void *mdata)
+{
+ char **c1, **c2;
+
+ if (serv1 == serv2)
+ return 0;
+
+ if ((serv1 == NULL) || (serv2 == NULL))
+ goto errfin;
+
+ if ((strcmp(serv1->s_name, serv2->s_name) != 0) ||
+ (strcmp(serv1->s_proto, serv2->s_proto) != 0) ||
+ (serv1->s_port != serv2->s_port))
+ goto errfin;
+
+ c1 = serv1->s_aliases;
+ c2 = serv2->s_aliases;
+
+ if ((serv1->s_aliases == NULL) || (serv2->s_aliases == NULL))
+ goto errfin;
+
+ for (;*c1 && *c2; ++c1, ++c2)
+ if (strcmp(*c1, *c2) != 0)
+ goto errfin;
+
+ if ((*c1 != '\0') || (*c2 != '\0'))
+ goto errfin;
+
+ return 0;
+
+errfin:
+ if ((debug) && (mdata == NULL)) {
+ printf("following structures are not equal:\n");
+ dump_servent(serv1);
+ dump_servent(serv2);
+ }
+
+ return (-1);
+}
+
+static void
+sdump_servent(struct servent *serv, char *buffer, size_t buflen)
+{
+ char **cp;
+ int written;
+
+ written = snprintf(buffer, buflen, "%s %d %s",
+ serv->s_name, ntohs(serv->s_port), serv->s_proto);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (serv->s_aliases != NULL) {
+ if (*(serv->s_aliases) != '\0') {
+ for (cp = serv->s_aliases; *cp; ++cp) {
+ written = snprintf(buffer, buflen, " %s",*cp);
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+
+ if (buflen == 0)
+ return;
+ }
+ } else
+ snprintf(buffer, buflen, " noaliases");
+ } else
+ snprintf(buffer, buflen, " (null)");
+}
+
+static int
+servent_read_snapshot_func(struct servent *serv, char *line)
+{
+ StringList *sl;
+ char *s, *ps, *ts;
+ int i;
+
+ if (debug)
+ printf("1 line read from snapshot:\n%s\n", line);
+
+ i = 0;
+ sl = NULL;
+ ps = line;
+ memset(serv, 0, sizeof(struct servent));
+ while ( (s = strsep(&ps, " ")) != NULL) {
+ switch (i) {
+ case 0:
+ serv->s_name = strdup(s);
+ assert(serv->s_name != NULL);
+ break;
+
+ case 1:
+ serv->s_port = htons(
+ (int)strtol(s, &ts, 10));
+ if (*ts != '\0') {
+ free(serv->s_name);
+ return (-1);
+ }
+ break;
+
+ case 2:
+ serv->s_proto = strdup(s);
+ assert(serv->s_proto != NULL);
+ break;
+
+ default:
+ if (sl == NULL) {
+ if (strcmp(s, "(null)") == 0)
+ return (0);
+
+ sl = sl_init();
+ assert(sl != NULL);
+
+ if (strcmp(s, "noaliases") != 0) {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl, ts);
+ }
+ } else {
+ ts = strdup(s);
+ assert(ts != NULL);
+ sl_add(sl, ts);
+ }
+ break;
+ };
+ ++i;
+ }
+
+ if (i < 3) {
+ free(serv->s_name);
+ free(serv->s_proto);
+ memset(serv, 0, sizeof(struct servent));
+ return (-1);
+ }
+
+ sl_add(sl, NULL);
+ serv->s_aliases = sl->sl_str;
+
+ /* NOTE: is it a dirty hack or not? */
+ free(sl);
+ return (0);
+}
+
+static void
+dump_servent(struct servent *result)
+{
+ if (result != NULL) {
+ char buffer[1024];
+ sdump_servent(result, buffer, sizeof(buffer));
+ printf("%s\n", buffer);
+ } else
+ printf("(null)\n");
+}
+
+static int
+servent_fill_test_data(struct servent_test_data *td)
+{
+ struct servent *serv;
+
+ setservent(1);
+ while ((serv = getservent()) != NULL) {
+ if (servent_test_correctness(serv, NULL) == 0)
+ TEST_DATA_APPEND(servent, td, serv);
+ else
+ return (-1);
+ }
+ endservent();
+
+ return (0);
+}
+
+static int
+servent_test_correctness(struct servent *serv, void *mdata)
+{
+ if (debug) {
+ printf("testing correctness with the following data:\n");
+ dump_servent(serv);
+ }
+
+ if (serv == NULL)
+ goto errfin;
+
+ if (serv->s_name == NULL)
+ goto errfin;
+
+ if (serv->s_proto == NULL)
+ goto errfin;
+
+ if (ntohs(serv->s_port < 0))
+ goto errfin;
+
+ if (serv->s_aliases == NULL)
+ goto errfin;
+
+ if (debug)
+ printf("correct\n");
+
+ return (0);
+errfin:
+ if (debug)
+ printf("incorrect\n");
+
+ return (-1);
+}
+
+/* servent_check_ambiguity() is needed when one port+proto is associated with
+ * more than one service (these cases are usually marked as PROBLEM in
+ * /etc/services. This functions is needed also when one service+proto is
+ * associated with several ports. We have to check all the servent structures
+ * to make sure that serv really exists and correct */
+static int
+servent_check_ambiguity(struct servent_test_data *td, struct servent *serv)
+{
+
+ return (TEST_DATA_FIND(servent, td, serv, compare_servent,
+ NULL) != NULL ? 0 : -1);
+}
+
+static int
+servent_test_getservbyname(struct servent *serv_model, void *mdata)
+{
+ char **alias;
+ struct servent *serv;
+
+ if (debug) {
+ printf("testing getservbyname() with the following data:\n");
+ dump_servent(serv_model);
+ }
+
+ serv = getservbyname(serv_model->s_name, serv_model->s_proto);
+ if (servent_test_correctness(serv, NULL) != 0)
+ goto errfin;
+
+ if ((compare_servent(serv, serv_model, NULL) != 0) &&
+ (servent_check_ambiguity((struct servent_test_data *)mdata, serv)
+ !=0))
+ goto errfin;
+
+ for (alias = serv_model->s_aliases; *alias; ++alias) {
+ serv = getservbyname(*alias, serv_model->s_proto);
+
+ if (servent_test_correctness(serv, NULL) != 0)
+ goto errfin;
+
+ if ((compare_servent(serv, serv_model, NULL) != 0) &&
+ (servent_check_ambiguity(
+ (struct servent_test_data *)mdata, serv) != 0))
+ goto errfin;
+ }
+
+ if (debug)
+ printf("ok\n");
+ return (0);
+
+errfin:
+ if (debug)
+ printf("not ok\n");
+
+ return (-1);
+}
+
+static int
+servent_test_getservbyport(struct servent *serv_model, void *mdata)
+{
+ struct servent *serv;
+
+ if (debug) {
+ printf("testing getservbyport() with the following data...\n");
+ dump_servent(serv_model);
+ }
+
+ serv = getservbyport(serv_model->s_port, serv_model->s_proto);
+ if ((servent_test_correctness(serv, NULL) != 0) ||
+ ((compare_servent(serv, serv_model, NULL) != 0) &&
+ (servent_check_ambiguity((struct servent_test_data *)mdata, serv)
+ != 0))) {
+ if (debug)
+ printf("not ok\n");
+ return (-1);
+ } else {
+ if (debug)
+ printf("ok\n");
+ return (0);
+ }
+}
+
+static int
+servent_test_getservent(struct servent *serv, void *mdata)
+{
+ /* Only correctness can be checked when doing 1-pass test for
+ * getservent(). */
+ return (servent_test_correctness(serv, NULL));
+}
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr,
+ "Usage: %s -npe2 [-d] [-s <file>]\n",
+ getprogname());
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct servent_test_data td, td_snap, td_2pass;
+ char *snapshot_file;
+ int rv;
+ int c;
+
+ if (argc < 2)
+ usage();
+
+ snapshot_file = NULL;
+ while ((c = getopt(argc, argv, "npe2ds:")) != -1)
+ switch (c) {
+ case 'd':
+ debug++;
+ break;
+ case 'n':
+ method = TEST_GETSERVBYNAME;
+ break;
+ case 'p':
+ method = TEST_GETSERVBYPORT;
+ break;
+ case 'e':
+ method = TEST_GETSERVENT;
+ break;
+ case '2':
+ method = TEST_GETSERVENT_2PASS;
+ break;
+ case 's':
+ snapshot_file = strdup(optarg);
+ break;
+ default:
+ usage();
+ }
+
+ TEST_DATA_INIT(servent, &td, clone_servent, free_servent);
+ TEST_DATA_INIT(servent, &td_snap, clone_servent, free_servent);
+ if (snapshot_file != NULL) {
+ if (access(snapshot_file, W_OK | R_OK) != 0) {
+ if (errno == ENOENT)
+ method = TEST_BUILD_SNAPSHOT;
+ else {
+ if (debug)
+ printf("can't access the file %s\n",
+ snapshot_file);
+
+ rv = -1;
+ goto fin;
+ }
+ } else {
+ if (method == TEST_BUILD_SNAPSHOT) {
+ rv = 0;
+ goto fin;
+ }
+
+ TEST_SNAPSHOT_FILE_READ(servent, snapshot_file,
+ &td_snap, servent_read_snapshot_func);
+ }
+ }
+
+ rv = servent_fill_test_data(&td);
+ if (rv == -1)
+ return (-1);
+ switch (method) {
+ case TEST_GETSERVBYNAME:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(servent, &td,
+ servent_test_getservbyname, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(servent, &td_snap,
+ servent_test_getservbyname, (void *)&td_snap);
+ break;
+ case TEST_GETSERVBYPORT:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(servent, &td,
+ servent_test_getservbyport, (void *)&td);
+ else
+ rv = DO_1PASS_TEST(servent, &td_snap,
+ servent_test_getservbyport, (void *)&td_snap);
+ break;
+ case TEST_GETSERVENT:
+ if (snapshot_file == NULL)
+ rv = DO_1PASS_TEST(servent, &td, servent_test_getservent,
+ (void *)&td);
+ else
+ rv = DO_2PASS_TEST(servent, &td, &td_snap,
+ compare_servent, NULL);
+ break;
+ case TEST_GETSERVENT_2PASS:
+ TEST_DATA_INIT(servent, &td_2pass, clone_servent, free_servent);
+ rv = servent_fill_test_data(&td_2pass);
+ if (rv != -1)
+ rv = DO_2PASS_TEST(servent, &td, &td_2pass,
+ compare_servent, NULL);
+ TEST_DATA_DESTROY(servent, &td_2pass);
+ break;
+ case TEST_BUILD_SNAPSHOT:
+ if (snapshot_file != NULL)
+ rv = TEST_SNAPSHOT_FILE_WRITE(servent, snapshot_file, &td,
+ sdump_servent);
+ break;
+ default:
+ rv = 0;
+ break;
+ };
+
+fin:
+ TEST_DATA_DESTROY(servent, &td_snap);
+ TEST_DATA_DESTROY(servent, &td);
+ free(snapshot_file);
+ return (rv);
+}
diff --git a/tools/regression/lib/libc/nss/test-getserv.t b/tools/regression/lib/libc/nss/test-getserv.t
new file mode 100644
index 0000000..60a6c50
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getserv.t
@@ -0,0 +1,29 @@
+#!/bin/sh
+# $FreeBSD$
+
+do_test() {
+ number=$1
+ comment=$2
+ opt=$3
+ if ./$executable $opt; then
+ echo "ok $number - $comment"
+ else
+ echo "not ok $number - $comment"
+ fi
+}
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..8
+do_test 1 'getservbyname()' '-n'
+do_test 2 'getservbyport()' '-p'
+do_test 3 'getservent()' '-e'
+do_test 4 'getservent() 2-pass' '-2'
+do_test 5 'building snapshot, if needed' '-s snapshot_serv'
+do_test 6 'getservbyname() snapshot' '-n -s snapshot_serv'
+do_test 7 'getservbyport() snapshot' '-p -s snapshot_serv'
+do_test 8 'getservent() snapshot' '-e -s snapshot_serv'
diff --git a/tools/regression/lib/libc/nss/test-getusershell.c b/tools/regression/lib/libc/nss/test-getusershell.c
new file mode 100644
index 0000000..20faaac
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getusershell.c
@@ -0,0 +1,235 @@
+/*-
+ * Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
+ * All rights repwded.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "testutil.h"
+
+enum test_methods {
+ TEST_GETUSERSHELL,
+ TEST_BUILD_SNAPSHOT
+};
+
+struct usershell {
+ char *path;
+};
+
+static int debug = 0;
+static enum test_methods method = TEST_GETUSERSHELL;
+
+DECLARE_TEST_DATA(usershell)
+DECLARE_TEST_FILE_SNAPSHOT(usershell)
+DECLARE_2PASS_TEST(usershell)
+
+static void clone_usershell(struct usershell *, struct usershell const *);
+static int compare_usershell(struct usershell *, struct usershell *, void *);
+static void free_usershell(struct usershell *);
+
+static void sdump_usershell(struct usershell *, char *, size_t);
+static void dump_usershell(struct usershell *);
+
+static int usershell_read_snapshot_func(struct usershell *, char *);
+
+static void usage(void) __attribute__((__noreturn__));
+
+IMPLEMENT_TEST_DATA(usershell)
+IMPLEMENT_TEST_FILE_SNAPSHOT(usershell)
+IMPLEMENT_2PASS_TEST(usershell)
+
+static void
+clone_usershell(struct usershell *dest, struct usershell const *src)
+{
+ assert(dest != NULL);
+ assert(src != NULL);
+
+ if (src->path != NULL) {
+ dest->path = strdup(src->path);
+ assert(dest->path != NULL);
+ }
+}
+
+static int
+compare_usershell(struct usershell *us1, struct usershell *us2, void *mdata)
+{
+ int rv;
+
+ assert(us1 != NULL);
+ assert(us2 != NULL);
+
+ dump_usershell(us1);
+ dump_usershell(us2);
+
+ if (us1 == us2)
+ return (0);
+
+ rv = strcmp(us1->path, us2->path);
+ if (rv != 0) {
+ printf("following structures are not equal:\n");
+ dump_usershell(us1);
+ dump_usershell(us2);
+ }
+
+ return (rv);
+}
+
+static void
+free_usershell(struct usershell *us)
+{
+ free(us->path);
+}
+
+static void
+sdump_usershell(struct usershell *us, char *buffer, size_t buflen)
+{
+ snprintf(buffer, buflen, "%s", us->path);
+}
+
+static void
+dump_usershell(struct usershell *us)
+{
+ if (us != NULL) {
+ char buffer[2048];
+ sdump_usershell(us, buffer, sizeof(buffer));
+ printf("%s\n", buffer);
+ } else
+ printf("(null)\n");
+}
+
+static int
+usershell_read_snapshot_func(struct usershell *us, char *line)
+{
+ us->path = strdup(line);
+ assert(us->path != NULL);
+
+ return (0);
+}
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr,
+ "Usage: %s [-d] -s <file>\n",
+ getprogname());
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ struct usershell_test_data td, td_snap;
+ struct usershell ushell;
+ char *snapshot_file;
+ int rv;
+ int c;
+
+ if (argc < 2)
+ usage();
+
+ rv = 0;
+ snapshot_file = NULL;
+ while ((c = getopt(argc, argv, "ds:")) != -1) {
+ switch (c) {
+ case 'd':
+ debug = 1;
+ break;
+ case 's':
+ snapshot_file = strdup(optarg);
+ break;
+ default:
+ usage();
+ }
+ }
+
+ TEST_DATA_INIT(usershell, &td, clone_usershell, free_usershell);
+ TEST_DATA_INIT(usershell, &td_snap, clone_usershell, free_usershell);
+
+ setusershell();
+ while ((ushell.path = getusershell()) != NULL) {
+ if (debug) {
+ printf("usershell found:\n");
+ dump_usershell(&ushell);
+ }
+ TEST_DATA_APPEND(usershell, &td, &ushell);
+ }
+ endusershell();
+
+
+ if (snapshot_file != NULL) {
+ if (access(snapshot_file, W_OK | R_OK) != 0) {
+ if (errno == ENOENT)
+ method = TEST_BUILD_SNAPSHOT;
+ else {
+ if (debug)
+ printf("can't access the snapshot file %s\n",
+ snapshot_file);
+
+ rv = -1;
+ goto fin;
+ }
+ } else {
+ rv = TEST_SNAPSHOT_FILE_READ(usershell, snapshot_file,
+ &td_snap, usershell_read_snapshot_func);
+ if (rv != 0) {
+ if (debug)
+ printf("error reading snapshot file\n");
+ goto fin;
+ }
+ }
+ }
+
+ switch (method) {
+ case TEST_GETUSERSHELL:
+ if (snapshot_file != NULL) {
+ rv = DO_2PASS_TEST(usershell, &td, &td_snap,
+ compare_usershell, NULL);
+ }
+ break;
+ case TEST_BUILD_SNAPSHOT:
+ if (snapshot_file != NULL) {
+ rv = TEST_SNAPSHOT_FILE_WRITE(usershell, snapshot_file, &td,
+ sdump_usershell);
+ }
+ break;
+ default:
+ rv = 0;
+ break;
+ };
+
+fin:
+ TEST_DATA_DESTROY(usershell, &td_snap);
+ TEST_DATA_DESTROY(usershell, &td);
+ free(snapshot_file);
+ return (rv);
+
+}
diff --git a/tools/regression/lib/libc/nss/test-getusershell.t b/tools/regression/lib/libc/nss/test-getusershell.t
new file mode 100644
index 0000000..16a392a
--- /dev/null
+++ b/tools/regression/lib/libc/nss/test-getusershell.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+do_test() {
+ number=$1
+ comment=$2
+ opt=$3
+ if ./$executable $opt; then
+ echo "ok $number - $comment"
+ else
+ echo "not ok $number - $comment"
+ fi
+}
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..1
+do_test 1 'getusershell() snapshot' '-s snapshot_usershell'
diff --git a/tools/regression/lib/libc/nss/testutil.h b/tools/regression/lib/libc/nss/testutil.h
new file mode 100644
index 0000000..f1e91c2
--- /dev/null
+++ b/tools/regression/lib/libc/nss/testutil.h
@@ -0,0 +1,334 @@
+/*-
+ * Copyright (c) 2006 Michael Bushkov <bushman@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/queue.h>
+
+#define DECLARE_TEST_DATA(ent) \
+struct ent##_entry { \
+ struct ent data; \
+ STAILQ_ENTRY(ent##_entry) entries; \
+}; \
+ \
+struct ent##_test_data { \
+ void (*clone_func)(struct ent *, struct ent const *); \
+ void (*free_func)(struct ent *); \
+ \
+ STAILQ_HEAD(ent_head, ent##_entry) snapshot_data; \
+}; \
+ \
+void __##ent##_test_data_init(struct ent##_test_data *, \
+ void (*)(struct ent *, struct ent const *), \
+ void (*freef)(struct ent *)); \
+void __##ent##_test_data_destroy(struct ent##_test_data *); \
+ \
+void __##ent##_test_data_append(struct ent##_test_data *, struct ent *data);\
+int __##ent##_test_data_foreach(struct ent##_test_data *, \
+ int (*)(struct ent *, void *), void *); \
+int __##ent##_test_data_compare(struct ent##_test_data *, \
+ struct ent##_test_data *, int (*)(struct ent *, struct ent *, \
+ void *), void *); \
+struct ent *__##ent##_test_data_find(struct ent##_test_data *, struct ent *,\
+ int (*)(struct ent *, struct ent *, void *), void *); \
+void __##ent##_test_data_clear(struct ent##_test_data *);
+
+#define TEST_DATA_INIT(ent, td, clonef, freef)\
+ __##ent##_test_data_init(td, clonef, freef)
+#define TEST_DATA_DESTROY(ent, td) __##ent##_test_data_destroy(td)
+#define TEST_DATA_APPEND(ent, td, d) __##ent##_test_data_append(td, d)
+#define TEST_DATA_FOREACH(ent, td, f, mdata)\
+ __##ent##_test_data_foreach(td, f, mdata)
+#define TEST_DATA_COMPARE(ent, td1, td2, fcmp, mdata)\
+ __##ent##_test_data_compare(td1, td2, fcmp, mdata);
+#define TEST_DATA_FIND(ent, td, d, fcmp, mdata)\
+ __##ent##_test_data_find(td, d, fcmp, mdata)
+#define TEST_DATA_CLEAR(ent, td) __##ent##_test_data_clear(td)
+
+#define IMPLEMENT_TEST_DATA(ent) \
+void \
+__##ent##_test_data_init(struct ent##_test_data *td, \
+ void (*clonef)(struct ent *, struct ent const *), \
+ void (*freef)(struct ent *)) \
+{ \
+ assert(td != NULL); \
+ assert(clonef != NULL); \
+ assert(freef != NULL); \
+ \
+ memset(td, 0, sizeof(*td)); \
+ td->clone_func = clonef; \
+ td->free_func = freef; \
+ STAILQ_INIT(&td->snapshot_data); \
+} \
+ \
+void \
+__##ent##_test_data_destroy(struct ent##_test_data *td) \
+{ \
+ __##ent##_test_data_clear(td); \
+} \
+ \
+void \
+__##ent##_test_data_append(struct ent##_test_data *td, struct ent *app_data)\
+{ \
+ struct ent##_entry *e; \
+ \
+ assert(td != NULL); \
+ assert(app_data != NULL); \
+ \
+ e = (struct ent##_entry *)malloc(sizeof(struct ent##_entry)); \
+ assert(e != NULL); \
+ memset(e, 0, sizeof(struct ent##_entry)); \
+ \
+ td->clone_func(&e->data, app_data); \
+ STAILQ_INSERT_TAIL(&td->snapshot_data, e, entries); \
+} \
+ \
+int \
+__##ent##_test_data_foreach(struct ent##_test_data *td, \
+ int (*forf)(struct ent *, void *), void *mdata) \
+{ \
+ struct ent##_entry *e; \
+ int rv; \
+ \
+ assert(td != NULL); \
+ assert(forf != NULL); \
+ \
+ rv = 0; \
+ STAILQ_FOREACH(e, &td->snapshot_data, entries) { \
+ rv = forf(&e->data, mdata); \
+ if (rv != 0) \
+ break; \
+ } \
+ \
+ return (rv); \
+} \
+ \
+int \
+__##ent##_test_data_compare(struct ent##_test_data *td1, struct ent##_test_data *td2,\
+ int (*cmp_func)(struct ent *, struct ent *, void *), void *mdata)\
+{ \
+ struct ent##_entry *e1, *e2; \
+ int rv; \
+ \
+ assert(td1 != NULL); \
+ assert(td2 != NULL); \
+ assert(cmp_func != NULL); \
+ \
+ e1 = STAILQ_FIRST(&td1->snapshot_data); \
+ e2 = STAILQ_FIRST(&td2->snapshot_data); \
+ \
+ rv = 0; \
+ do { \
+ if ((e1 == NULL) || (e2 == NULL)) { \
+ if (e1 == e2) \
+ return (0); \
+ else \
+ return (-1); \
+ } \
+ \
+ rv = cmp_func(&e1->data, &e2->data, mdata); \
+ e1 = STAILQ_NEXT(e1, entries); \
+ e2 = STAILQ_NEXT(e2, entries); \
+ } while (rv == 0); \
+ \
+ return (rv); \
+} \
+ \
+struct ent * \
+__##ent##_test_data_find(struct ent##_test_data *td, struct ent *data, \
+ int (*cmp)(struct ent *, struct ent *, void *), void *mdata) \
+{ \
+ struct ent##_entry *e; \
+ struct ent *result; \
+ \
+ assert(td != NULL); \
+ assert(cmp != NULL); \
+ \
+ result = NULL; \
+ STAILQ_FOREACH(e, &td->snapshot_data, entries) { \
+ if (cmp(&e->data, data, mdata) == 0) { \
+ result = &e->data; \
+ break; \
+ } \
+ } \
+ \
+ return (result); \
+} \
+ \
+ \
+void \
+__##ent##_test_data_clear(struct ent##_test_data *td) \
+{ \
+ struct ent##_entry *e; \
+ assert(td != NULL); \
+ \
+ while (!STAILQ_EMPTY(&td->snapshot_data)) { \
+ e = STAILQ_FIRST(&td->snapshot_data); \
+ STAILQ_REMOVE_HEAD(&td->snapshot_data, entries); \
+ \
+ td->free_func(&e->data); \
+ free(e); \
+ } \
+}
+
+ \
+#define DECLARE_TEST_FILE_SNAPSHOT(ent) \
+struct ent##_snp_param { \
+ FILE *fp; \
+ void (*sdump_func)(struct ent *, char *, size_t); \
+}; \
+ \
+int __##ent##_snapshot_write_func(struct ent *, void *); \
+int __##ent##_snapshot_write(char const *, struct ent##_test_data *, \
+ void (*)(struct ent *, char *, size_t)); \
+int __##ent##_snapshot_read(char const *, struct ent##_test_data *, \
+ int (*)(struct ent *, char *));
+
+#define TEST_SNAPSHOT_FILE_WRITE(ent, fname, td, f) \
+ __##ent##_snapshot_write(fname, td, f)
+#define TEST_SNAPSHOT_FILE_READ(ent, fname, td, f) \
+ __##ent##_snapshot_read(fname, td, f)
+
+#define IMPLEMENT_TEST_FILE_SNAPSHOT(ent) \
+int \
+__##ent##_snapshot_write_func(struct ent *data, void *mdata) \
+{ \
+ char buffer[1024]; \
+ struct ent##_snp_param *param; \
+ \
+ assert(data != NULL); \
+ \
+ param = (struct ent##_snp_param *)mdata; \
+ param->sdump_func(data, buffer, sizeof(buffer)); \
+ fputs(buffer, param->fp); \
+ fputc('\n', param->fp); \
+ \
+ return (0); \
+} \
+ \
+int \
+__##ent##_snapshot_write(char const *fname, struct ent##_test_data *td, \
+ void (*sdump_func)(struct ent *, char *, size_t)) \
+{ \
+ struct ent##_snp_param param; \
+ \
+ assert(fname != NULL); \
+ assert(td != NULL); \
+ \
+ param.fp = fopen(fname, "w"); \
+ if (param.fp == NULL) \
+ return (-1); \
+ \
+ param.sdump_func = sdump_func; \
+ __##ent##_test_data_foreach(td, __##ent##_snapshot_write_func, &param);\
+ fclose(param.fp); \
+ \
+ return (0); \
+} \
+ \
+int \
+__##ent##_snapshot_read(char const *fname, struct ent##_test_data *td, \
+ int (*read_func)(struct ent *, char *)) \
+{ \
+ char buffer[1024]; \
+ struct ent data; \
+ char *s; \
+ FILE *fi; \
+ size_t len; \
+ int rv; \
+ \
+ assert(fname != NULL); \
+ assert(td != NULL); \
+ \
+ fi = fopen(fname, "r"); \
+ if (fi == NULL) \
+ return (-1); \
+ \
+ rv = 0; \
+ memset(buffer, 0, sizeof(buffer)); \
+ while (!feof(fi)) { \
+ s = fgets(buffer, sizeof(buffer), fi); \
+ if (s != NULL && s[0] != '#') { \
+ len = strlen(s); \
+ if (len == 0) \
+ continue; \
+ if (buffer[len - 1] == '\n') \
+ buffer[len -1] = '\0'; \
+ \
+ rv = read_func(&data, s); \
+ if (rv == 0) { \
+ __##ent##_test_data_append(td, &data); \
+ td->free_func(&data); \
+ } else \
+ goto fin; \
+ } \
+ } \
+ \
+fin: \
+ fclose(fi); \
+ return (rv); \
+}
+
+#define DECLARE_1PASS_TEST(ent) \
+int __##ent##_1pass_test(struct ent##_test_data *, \
+ int (*)(struct ent *, void *), \
+ void *);
+
+#define DO_1PASS_TEST(ent, td, f, mdata) \
+ __##ent##_1pass_test(td, f, mdata)
+
+#define IMPLEMENT_1PASS_TEST(ent) \
+int \
+__##ent##_1pass_test(struct ent##_test_data *td, \
+ int (*tf)(struct ent *, void *), \
+ void *mdata) \
+{ \
+ int rv; \
+ rv = __##ent##_test_data_foreach(td, tf, mdata); \
+ \
+ return (rv); \
+}
+
+#define DECLARE_2PASS_TEST(ent) \
+int __##ent##_2pass_test(struct ent##_test_data *, \
+ struct ent##_test_data *, \
+ int (*)(struct ent *, struct ent *, void *), void *);
+
+#define DO_2PASS_TEST(ent, td1, td2, f, mdata) \
+ __##ent##_2pass_test(td1, td2, f, mdata)
+
+#define IMPLEMENT_2PASS_TEST(ent) \
+int \
+__##ent##_2pass_test(struct ent##_test_data *td1, \
+ struct ent##_test_data *td2, \
+ int (*cmp_func)(struct ent *, struct ent *, void *), \
+ void *cmp_mdata) \
+{ \
+ int rv; \
+ \
+ rv = __##ent##_test_data_compare(td1, td2, cmp_func, cmp_mdata); \
+ return (rv); \
+}
diff --git a/tools/regression/lib/libc/regex/Makefile b/tools/regression/lib/libc/regex/Makefile
new file mode 100644
index 0000000..f91bef2
--- /dev/null
+++ b/tools/regression/lib/libc/regex/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+GROT= ../../../../../lib/libc/regex/grot
+
+.PHONY: tests
+tests:
+ cd ${GROT}; make && echo "PASS regex"
+
+.PHONY: clean
+clean:
+ cd ${GROT}; make spotless
diff --git a/tools/regression/lib/libc/resolv/Makefile b/tools/regression/lib/libc/resolv/Makefile
new file mode 100644
index 0000000..9b4e6b1
--- /dev/null
+++ b/tools/regression/lib/libc/resolv/Makefile
@@ -0,0 +1,15 @@
+# $NetBSD: Makefile,v 1.1 2004/05/13 19:17:12 christos Exp $
+# $FreeBSD$
+
+PROG= resolv
+NO_MAN=
+
+# Note: this test relies on being dynamically linked. You will get a
+# spurious PASS for a statically linked test.
+DPADD+= ${LIBPTHREAD}
+LDADD+= -lpthread
+
+regress: ${PROG}
+ ./${PROG} -r ${.CURDIR}/mach
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/lib/libc/resolv/mach b/tools/regression/lib/libc/resolv/mach
new file mode 100644
index 0000000..f3c3981
--- /dev/null
+++ b/tools/regression/lib/libc/resolv/mach
@@ -0,0 +1,92 @@
+above.warped.net
+anoncvs.cirr.com
+anoncvs.isc.netbsd.org
+anoncvs.leo.org
+anoncvs.netbsd.lt
+anoncvs.netbsd.ro
+anoncvs.netbsd.se
+antioche.antioche.eu.org
+boulder.tele.dk
+centaurus.4web.cz
+chur.math.ntnu.no
+cnftp.bjpu.edu.cn
+console.netbsd.org
+cvs.fi.netbsd.org
+cvs.mikrolahti.fi
+cvs.netbsd.org
+cvsup-netbsd.leo.org
+cvsup.netbsd.se
+cvsup.pasta.cs.uit.no
+ftp.bitcon.no
+ftp.chg.ru
+ftp.duth.gr
+ftp.estpak.ee
+ftp.fsn.hu
+ftp.funet.fi
+ftp.grondar.za
+ftp.leo.org
+ftp.netbsd.lt
+ftp.netbsd.org
+ftp.nluug.nl
+ftp.plig.org
+ftp.uni-erlangen.de
+ftp.xgate.co.kr
+gd.tuwien.ac.at
+gort.ludd.luth.se
+grappa.unix-ag.uni-kl.de
+info.wins.uva.nl
+irc.warped.net
+knug.youn.co.kr
+lala.iri.co.jp
+mail.jp.netbsd.org
+mail.kr.netbsd.org
+mail.netbsd.org
+melanoma.cs.rmit.edu.au
+mirror.aarnet.edu.au
+mirror.netbsd.com.br
+mirror03.inet.tele.dk
+moon.vub.ac.be
+nbwww.sergei.cc
+net.bsd.cz
+netbsd.3miasto.net
+netbsd.4ka.mipt.ru
+netbsd.apk.od.ua
+netbsd.csie.nctu.edu.tw
+netbsd.enderunix.org
+netbsd.ftp.fu-berlin.de
+netbsd.netlead.com.au
+netbsd.nsysu.edu.tw
+netbsd.pair.com
+netbsd.stevens-tech.edu
+netbsd.triada.bg
+netbsd.unix.net.nz
+netbsd.unixtech.be
+netbsd.vejas.lt
+netbsd.wagener-consulting.lu
+netbsd.zarco.org
+netbsdiso.interoute.net.uk
+netbsdwww.bitcon.no
+netbsdwww.cordef.com.pl
+netbsdwww.cs.rmit.edu.au
+netbsdwww.interoute.net.uk
+news.gw.com
+ns.netbsd.org
+pigu.iri.co.jp
+pluto.cdpa.nsysu.edu.tw
+projects.slowass.net
+server6.pasta.cs.uit.no
+skeleton.phys.spbu.ru
+snoopy.allbsd.org
+spike.allbsd.org
+sundry.netbsd.org
+tanya.sergei.cc
+web-a.fi.gw.com
+web-a.us.gw.com
+web.netbsd.mirror.arhea.net
+www.en.netbsd.de
+www.netbsd.cl
+www.netbsd.nl
+www.netbsd.org
+www.netbsd.ro
+zathras.netbsd.org
+zeppo.rediris.es
diff --git a/tools/regression/lib/libc/resolv/resolv.c b/tools/regression/lib/libc/resolv/resolv.c
new file mode 100644
index 0000000..dc925d3
--- /dev/null
+++ b/tools/regression/lib/libc/resolv/resolv.c
@@ -0,0 +1,330 @@
+/* $NetBSD: resolv.c,v 1.6 2004/05/23 16:59:11 christos Exp $ */
+
+/*-
+ * Copyright (c) 2004 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+/* $FreeBSD$ */
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: resolv.c,v 1.6 2004/05/23 16:59:11 christos Exp $");
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <netdb.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <err.h>
+#include <string.h>
+#include <stringlist.h>
+
+#define NTHREADS 10
+#define NHOSTS 100
+#define WS " \t\n\r"
+
+enum method {
+ METHOD_GETADDRINFO,
+ METHOD_GETHOSTBY,
+ METHOD_GETIPNODEBY
+};
+
+static StringList *hosts = NULL;
+static int debug = 0;
+static enum method method = METHOD_GETADDRINFO;
+static int reverse = 0;
+static int *ask = NULL;
+static int *got = NULL;
+
+static void usage(void) __attribute__((__noreturn__));
+static void load(const char *);
+static void resolvone(int);
+static void *resolvloop(void *);
+static void run(int *);
+
+static pthread_mutex_t stats = PTHREAD_MUTEX_INITIALIZER;
+
+static void
+usage(void)
+{
+ (void)fprintf(stderr,
+ "Usage: %s [-AdHIr] [-h <nhosts>] [-n <nthreads>] <file> ...\n",
+ getprogname());
+ exit(1);
+}
+
+static void
+load(const char *fname)
+{
+ FILE *fp;
+ size_t len;
+ char *line;
+
+ if ((fp = fopen(fname, "r")) == NULL)
+ err(1, "Cannot open `%s'", fname);
+ while ((line = fgetln(fp, &len)) != NULL) {
+ char c = line[len];
+ char *ptr;
+ line[len] = '\0';
+ for (ptr = strtok(line, WS); ptr; ptr = strtok(NULL, WS))
+ sl_add(hosts, strdup(ptr));
+ line[len] = c;
+ }
+
+ (void)fclose(fp);
+}
+
+static int
+resolv_getaddrinfo(pthread_t self, char *host, int port)
+{
+ char portstr[6], buf[1024], hbuf[NI_MAXHOST], pbuf[NI_MAXSERV];
+ struct addrinfo hints, *res;
+ int error, len;
+
+ snprintf(portstr, sizeof(portstr), "%d", port);
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_flags = AI_PASSIVE;
+ hints.ai_socktype = SOCK_STREAM;
+ error = getaddrinfo(host, portstr, &hints, &res);
+ if (debug) {
+ len = snprintf(buf, sizeof(buf), "%p: host %s %s\n",
+ self, host, error ? "not found" : "ok");
+ (void)write(STDOUT_FILENO, buf, len);
+ }
+ if (error == 0 && reverse) {
+ memset(hbuf, 0, sizeof(hbuf));
+ memset(pbuf, 0, sizeof(pbuf));
+ getnameinfo(res->ai_addr, res->ai_addrlen, hbuf, sizeof(hbuf),
+ pbuf, sizeof(pbuf), 0);
+ if (debug) {
+ len = snprintf(buf, sizeof(buf),
+ "%p: reverse %s %s\n", self, hbuf, pbuf);
+ (void)write(STDOUT_FILENO, buf, len);
+ }
+ }
+ if (error == 0)
+ freeaddrinfo(res);
+ return error;
+}
+
+static int
+resolv_gethostby(pthread_t self, char *host)
+{
+ char buf[1024];
+ struct hostent *hp, *hp2;
+ int len;
+
+ hp = gethostbyname(host);
+ if (debug) {
+ len = snprintf(buf, sizeof(buf), "%p: host %s %s\n",
+ self, host, (hp == NULL) ? "not found" : "ok");
+ (void)write(STDOUT_FILENO, buf, len);
+ }
+ if (hp && reverse) {
+ memcpy(buf, hp->h_addr, hp->h_length);
+ hp2 = gethostbyaddr(buf, hp->h_length, hp->h_addrtype);
+ if (hp2 && debug) {
+ len = snprintf(buf, sizeof(buf),
+ "%p: reverse %s\n", self, hp2->h_name);
+ (void)write(STDOUT_FILENO, buf, len);
+ }
+ }
+ return hp ? 0 : -1;
+}
+
+static int
+resolv_getipnodeby(pthread_t self, char *host)
+{
+ char buf[1024];
+ struct hostent *hp, *hp2;
+ int len, h_error;
+
+ hp = getipnodebyname(host, AF_INET, 0, &h_error);
+ if (debug) {
+ len = snprintf(buf, sizeof(buf), "%p: host %s %s\n",
+ self, host, (hp == NULL) ? "not found" : "ok");
+ (void)write(STDOUT_FILENO, buf, len);
+ }
+ if (hp && reverse) {
+ memcpy(buf, hp->h_addr, hp->h_length);
+ hp2 = getipnodebyaddr(buf, hp->h_length, hp->h_addrtype,
+ &h_error);
+ if (hp2 && debug) {
+ len = snprintf(buf, sizeof(buf),
+ "%p: reverse %s\n", self, hp2->h_name);
+ (void)write(STDOUT_FILENO, buf, len);
+ }
+ if (hp2)
+ freehostent(hp2);
+ }
+ if (hp)
+ freehostent(hp);
+ return hp ? 0 : -1;
+}
+
+static void
+resolvone(int n)
+{
+ char buf[1024];
+ pthread_t self = pthread_self();
+ size_t i = (random() & 0x0fffffff) % hosts->sl_cur;
+ char *host = hosts->sl_str[i];
+ struct addrinfo hints, *res;
+ int error, len;
+
+ if (debug) {
+ len = snprintf(buf, sizeof(buf), "%p: %d resolving %s %d\n",
+ self, n, host, (int)i);
+ (void)write(STDOUT_FILENO, buf, len);
+ }
+ switch (method) {
+ case METHOD_GETADDRINFO:
+ error = resolv_getaddrinfo(self, host, i);
+ break;
+ case METHOD_GETHOSTBY:
+ error = resolv_gethostby(self, host);
+ break;
+ case METHOD_GETIPNODEBY:
+ error = resolv_getipnodeby(self, host);
+ break;
+ default:
+ break;
+ }
+ pthread_mutex_lock(&stats);
+ ask[i]++;
+ got[i] += error == 0;
+ pthread_mutex_unlock(&stats);
+}
+
+static void *
+resolvloop(void *p)
+{
+ int *nhosts = (int *)p;
+ if (*nhosts == 0)
+ return;
+ do
+ resolvone(*nhosts);
+ while (--(*nhosts));
+ return NULL;
+}
+
+static void
+run(int *nhosts)
+{
+ pthread_t self = pthread_self();
+ if (pthread_create(&self, NULL, resolvloop, nhosts) != 0)
+ err(1, "pthread_create");
+}
+
+int
+main(int argc, char *argv[])
+{
+ int nthreads = NTHREADS;
+ int nhosts = NHOSTS;
+ int i, c, done, *nleft;
+ hosts = sl_init();
+
+ srandom(1234);
+
+ while ((c = getopt(argc, argv, "Adh:HIn:r")) != -1)
+ switch (c) {
+ case 'A':
+ method = METHOD_GETADDRINFO;
+ break;
+ case 'd':
+ debug++;
+ break;
+ case 'h':
+ nhosts = atoi(optarg);
+ break;
+ case 'H':
+ method = METHOD_GETHOSTBY;
+ break;
+ case 'I':
+ method = METHOD_GETIPNODEBY;
+ break;
+ case 'n':
+ nthreads = atoi(optarg);
+ break;
+ case 'r':
+ reverse++;
+ break;
+ default:
+ usage();
+ }
+
+ for (i = optind; i < argc; i++)
+ load(argv[i]);
+
+ if (hosts->sl_cur == 0)
+ usage();
+
+ if ((nleft = malloc(nthreads * sizeof(int))) == NULL)
+ err(1, "malloc");
+ if ((ask = calloc(hosts->sl_cur, sizeof(int))) == NULL)
+ err(1, "calloc");
+ if ((got = calloc(hosts->sl_cur, sizeof(int))) == NULL)
+ err(1, "calloc");
+
+
+ for (i = 0; i < nthreads; i++) {
+ nleft[i] = nhosts;
+ run(&nleft[i]);
+ }
+
+ for (done = 0; !done;) {
+ done = 1;
+ for (i = 0; i < nthreads; i++) {
+ if (nleft[i] != 0) {
+ done = 0;
+ break;
+ }
+ }
+ sleep(1);
+ }
+ c = 0;
+ for (i = 0; i < hosts->sl_cur; i++) {
+ if (ask[i] != got[i] && got[i] != 0) {
+ warnx("Error: host %s ask %d got %d\n",
+ hosts->sl_str[i], ask[i], got[i]);
+ c++;
+ }
+ }
+ free(nleft);
+ free(ask);
+ free(got);
+ sl_free(hosts, 1);
+ return c;
+}
diff --git a/tools/regression/lib/libc/resolv/resolv.t b/tools/regression/lib/libc/resolv/resolv.t
new file mode 100644
index 0000000..278ba06
--- /dev/null
+++ b/tools/regression/lib/libc/resolv/resolv.t
@@ -0,0 +1,24 @@
+#!/bin/sh
+# $FreeBSD$
+
+do_test() {
+ number=$1
+ comment=$2
+ opt=$3
+ if ./$executable $opt; then
+ echo "ok $number - $comment"
+ else
+ echo "not ok $number - $comment"
+ fi
+}
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..3
+do_test 1 'getaddrinfo()' '-r mach'
+do_test 2 'gethostbyname()' '-rH mach'
+do_test 3 'getipnodebyname()' '-rI mach'
diff --git a/tools/regression/lib/libc/stdio/Makefile b/tools/regression/lib/libc/stdio/Makefile
new file mode 100644
index 0000000..35131e2
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+TESTS= test-perror test-printfloat test-scanfloat
+CFLAGS+= -lm
+
+.PHONY: tests
+tests: ${TESTS}
+ for p in ${TESTS}; do ${.OBJDIR}/$$p; done
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/libc/stdio/test-perror.c b/tools/regression/lib/libc/stdio/test-perror.c
new file mode 100644
index 0000000..992b734
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/test-perror.c
@@ -0,0 +1,107 @@
+/*-
+ * Copyright (c) 2002 Tim J. Robbins
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test program for perror() as specified by IEEE Std. 1003.1-2001 and
+ * ISO/IEC 9899:1999.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <limits.h>
+#include <paths.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static void cleanup(void);
+static char tmpfil[PATH_MAX];
+
+int
+main(int argc, char *argv[])
+{
+ char lbuf[512];
+ int i;
+ char *s;
+
+ printf("1..1\n");
+
+ strcpy(tmpfil, _PATH_TMP "perror.XXXXXXXX");
+ if (mkstemp(tmpfil) < 0)
+ err(1, "mkstemp");
+ atexit(cleanup);
+ /* Reopen stderr on a file descriptor other than 2. */
+ fclose(stderr);
+ for (i = 0; i < 3; i++)
+ dup(0);
+ if (freopen(tmpfil, "r+", stderr) == NULL)
+ err(1, "%s", tmpfil);
+
+ /*
+ * Test that perror() doesn't call strerror() (4.4BSD bug),
+ * the two ways of omitting a program name, and the formatting when
+ * a program name is specified.
+ */
+ s = strerror(ENOENT);
+ assert(strcmp(s, "No such file or directory") == 0);
+ errno = EPERM;
+ perror(NULL);
+ perror("");
+ perror("test-perror");
+ assert(strcmp(s, "No such file or directory") == 0);
+
+ /*
+ * Read it back to check...
+ */
+ rewind(stderr);
+ s = fgets(lbuf, sizeof(lbuf), stderr);
+ assert(s != NULL);
+ assert(strcmp(s, "Operation not permitted\n") == 0);
+ s = fgets(lbuf, sizeof(lbuf), stderr);
+ assert(s != NULL);
+ assert(strcmp(s, "Operation not permitted\n") == 0);
+ s = fgets(lbuf, sizeof(lbuf), stderr);
+ assert(s != NULL);
+ assert(strcmp(s, "test-perror: Operation not permitted\n") == 0);
+ s = fgets(lbuf, sizeof(lbuf), stderr);
+ assert(s == NULL);
+ fclose(stderr);
+
+ printf("ok 1 - perror()\n");
+
+ return (0);
+}
+
+static void
+cleanup(void)
+{
+
+ unlink(tmpfil);
+}
diff --git a/tools/regression/lib/libc/stdio/test-perror.t b/tools/regression/lib/libc/stdio/test-perror.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/test-perror.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/stdio/test-printfloat.c b/tools/regression/lib/libc/stdio/test-printfloat.c
new file mode 100644
index 0000000..fcacee5
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/test-printfloat.c
@@ -0,0 +1,329 @@
+/*-
+ * Copyright (c) 2002, 2005 David Schultz <das@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test for printf() floating point formats.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <err.h>
+#include <fenv.h>
+#include <float.h>
+#include <locale.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define testfmt(result, fmt, ...) \
+ _testfmt((result), __LINE__, #__VA_ARGS__, fmt, __VA_ARGS__)
+void _testfmt(const char *, int, const char *, const char *, ...);
+void smash_stack(void);
+
+int
+main(int argc, char *argv[])
+{
+
+ printf("1..11\n");
+ assert(setlocale(LC_NUMERIC, ""));
+
+ /*
+ * Basic tests of decimal output functionality.
+ */
+ testfmt(" 1.000000E+00", "%13E", 1.0);
+ testfmt(" 1.000000", "%13f", 1.0);
+ testfmt(" 1", "%13G", 1.0);
+ testfmt(" 1.000000E+00", "%13LE", 1.0L);
+ testfmt(" 1.000000", "%13Lf", 1.0L);
+ testfmt(" 1", "%13LG", 1.0L);
+
+ testfmt("2.718282", "%.*f", -2, 2.7182818);
+
+ testfmt("1.234568e+06", "%e", 1234567.8);
+ testfmt("1234567.800000", "%f", 1234567.8);
+ testfmt("1.23457E+06", "%G", 1234567.8);
+ testfmt("1.234568e+06", "%Le", 1234567.8L);
+ testfmt("1234567.800000", "%Lf", 1234567.8L);
+ testfmt("1.23457E+06", "%LG", 1234567.8L);
+
+#if (LDBL_MANT_DIG > DBL_MANT_DIG) && !defined(__i386__)
+ testfmt("123456789.864210", "%Lf", 123456789.8642097531L);
+ testfmt("-1.23457E+08", "%LG", -123456789.8642097531L);
+ testfmt("123456789.8642097531", "%.10Lf", 123456789.8642097531L);
+ testfmt(" 3.141592653589793238e-4000", "%L27.18Le",
+ 3.14159265358979323846e-4000L);
+#endif
+
+ printf("ok 1 - printfloat\n");
+
+ /*
+ * Infinities and NaNs
+ */
+ testfmt("nan", "%e", NAN);
+ testfmt("NAN", "%F", NAN);
+ testfmt("nan", "%g", NAN);
+ testfmt("NAN", "%LE", (long double)NAN);
+
+ testfmt("INF", "%E", HUGE_VAL);
+ testfmt("-inf", "%f", -HUGE_VAL);
+ testfmt("+inf", "%+g", HUGE_VAL);
+ testfmt(" inf", "%4.2Le", HUGE_VALL);
+ testfmt("-inf", "%Lf", -HUGE_VALL);
+
+ printf("ok 2 - printfloat\n");
+
+ /*
+ * Padding
+ */
+ testfmt("0.000000e+00", "%e", 0.0);
+ testfmt("0.000000", "%F", (double)0.0);
+ testfmt("0", "%G", 0.0);
+ testfmt(" 0", "%3.0Lg", 0.0L);
+ testfmt(" 0", "%5.0f", 0.001);
+ printf("ok 3 - printfloat\n");
+
+ /*
+ * Precision specifiers
+ */
+ testfmt("1.0123e+00", "%.4e", 1.0123456789);
+ testfmt("1.0123", "%.4f", 1.0123456789);
+ testfmt("1.012", "%.4g", 1.0123456789);
+ testfmt("1.2346e-02", "%.4e", 0.0123456789);
+ testfmt("0.0123", "%.4f", 0.0123456789);
+ testfmt("0.01235", "%.4g", 0.0123456789);
+ printf("ok 4 - printfloat\n");
+
+ /*
+ * Thousands' separators and other locale fun
+ */
+ testfmt("12345678.0625", "%'.04f", 12345678.0625);
+ testfmt("0012345678.0625", "%'015.4F", 12345678.0625);
+
+ assert(setlocale(LC_NUMERIC, "hi_IN.ISCII-DEV")); /* grouping == 2;3 */
+ testfmt("123,456,78.0625", "%'.4f", 12345678.0625);
+ testfmt("00123,456,78.0625", "%'017.4F", 12345678.0625);
+ testfmt(" 90,00", "%'6.0f", 9000.0);
+ testfmt("90,00.0", "%'.1f", 9000.0);
+
+ assert(setlocale(LC_NUMERIC, "ru_RU.ISO8859-5")); /* decimalpoint==, */
+ testfmt("3,1415", "%g", 3.1415);
+
+ /* thousands=. decimalpoint=, grouping=3;3 */
+ assert(setlocale(LC_NUMERIC, "el_GR.ISO8859-7")); /* decimalpoint==, */
+ testfmt("1.234,00", "%'.2f", 1234.00);
+ testfmt("123.456,789", "%'.3f", 123456.789);
+
+ assert(setlocale(LC_NUMERIC, ""));
+ testfmt("12345678.062500", "%'f", 12345678.0625);
+ testfmt("9000.000000", "%'f", 9000.0);
+
+ printf("ok 5 - printfloat\n");
+
+ /*
+ * Signed conversions
+ */
+ testfmt("+2.500000e-01", "%+e", 0.25);
+ testfmt("+0.000000", "%+F", 0.0);
+ testfmt("-1", "%+g", -1.0);
+
+ testfmt("-1.000000e+00", "% e", -1.0);
+ testfmt("+1.000000", "% +f", 1.0);
+ testfmt(" 1", "% g", 1.0);
+ testfmt(" 0", "% g", 0.0);
+
+ printf("ok 6 - printfloat\n");
+
+ /*
+ * ``Alternate form''
+ */
+ testfmt("1.250e+00", "%#.3e", 1.25);
+ testfmt("123.000000", "%#f", 123.0);
+ testfmt(" 12345.", "%#7.5g", 12345.0);
+ testfmt(" 1.00000", "%#8g", 1.0);
+ testfmt("0.0", "%#.2g", 0.0);
+ printf("ok 7 - printfloat\n");
+
+ /*
+ * Padding and decimal point placement
+ */
+ testfmt("03.2E+00", "%08.1E", 3.25);
+ testfmt("003.25", "%06.2F", 3.25);
+ testfmt("0003.25", "%07.4G", 3.25);
+
+ testfmt("3.14159e-05", "%g", 3.14159e-5);
+ testfmt("0.000314159", "%g", 3.14159e-4);
+ testfmt("3.14159e+06", "%g", 3.14159e6);
+ testfmt("314159", "%g", 3.14159e5);
+ testfmt("314159.", "%#g", 3.14159e5);
+
+ testfmt(" 9.000000e+03", "%13e", 9000.0);
+ testfmt(" 9000.000000", "%12f", 9000.0);
+ testfmt(" 9000", "%5g", 9000.0);
+ testfmt(" 900000.", "%#8g", 900000.0);
+ testfmt(" 9e+06", "%6g", 9000000.0);
+ testfmt(" 9.000000e-04", "%13e", 0.0009);
+ testfmt(" 0.000900", "%9f", 0.0009);
+ testfmt(" 0.0009", "%7g", 0.0009);
+ testfmt(" 9e-05", "%6g", 0.00009);
+ testfmt(" 9.00000e-05", "%#12g", 0.00009);
+ testfmt(" 9.e-05", "%#7.1g", 0.00009);
+
+ testfmt(" 0.0", "%4.1f", 0.0);
+ testfmt("90.0", "%4.1f", 90.0);
+ testfmt(" 100", "%4.0f", 100.0);
+ testfmt("9.0e+01", "%4.1e", 90.0);
+ testfmt("1e+02", "%4.0e", 100.0);
+
+ printf("ok 8 - printfloat\n");
+
+ /*
+ * Decimal rounding
+ */
+ fesetround(FE_DOWNWARD);
+ testfmt("4.437", "%.3f", 4.4375);
+ testfmt("-4.438", "%.3f", -4.4375);
+
+ fesetround(FE_UPWARD);
+ testfmt("4.438", "%.3f", 4.4375);
+ testfmt("-4.437", "%.3f", -4.4375);
+
+ fesetround(FE_TOWARDZERO);
+ testfmt("4.437", "%.3f", 4.4375);
+ testfmt("-4.437", "%.3f", -4.4375);
+
+ fesetround(FE_TONEAREST);
+ testfmt("4.438", "%.3f", 4.4375);
+ testfmt("-4.438", "%.3f", -4.4375);
+
+ printf("ok 9 - printfloat\n");
+
+ /*
+ * Hexadecimal floating point (%a, %A) tests. Some of these
+ * are only valid if the implementation converts to hex digits
+ * on nibble boundaries.
+ */
+ testfmt("0x0p+0", "%a", 0x0.0p0);
+ testfmt("0X0.P+0", "%#LA", 0x0.0p0L);
+ testfmt("inf", "%La", (long double)INFINITY);
+ testfmt("+INF", "%+A", INFINITY);
+ testfmt("nan", "%La", (long double)NAN);
+ testfmt("NAN", "%A", NAN);
+
+ testfmt(" 0x1.23p+0", "%10a", 0x1.23p0);
+ testfmt(" 0x1.23p-500", "%12a", 0x1.23p-500);
+ testfmt(" 0x1.2p+40", "%10.1a", 0x1.23p40);
+ testfmt(" 0X1.230000000000000000000000P-4", "%32.24A", 0x1.23p-4);
+ testfmt("0x1p-1074", "%a", 0x1p-1074);
+ testfmt("0x1.2345p-1024", "%a", 0x1.2345p-1024);
+
+#if (LDBL_MANT_DIG == 64) && !defined(__i386__)
+ testfmt("0xc.90fdaa22168c234p-2", "%La", 0x3.243f6a8885a308dp0L);
+ testfmt("0x8p-16448", "%La", 0x1p-16445L);
+ testfmt("0x9.8765p-16384", "%La", 0x9.8765p-16384L);
+#elif (LDBL_MANT_DIG == 113)
+ testfmt("0x1.921fb54442d18469898cc51701b8p+1", "%La",
+ 0x3.243f6a8885a308d313198a2e037p0L);
+ testfmt("0x1p-16494", "%La", 0x1p-16494L);
+ testfmt("0x1.2345p-16384", "%La", 0x1.2345p-16384L);
+#else
+ testfmt("0xc.90fdaa22168cp-2", "%La", 0x3.243f6a8885a31p0L);
+ testfmt("0x8p-1077", "%La", 0x1p-1074L);
+ testfmt("0x9.8765p-1024", "%La", 0x9.8765p-1024L);
+#endif
+
+ printf("ok 10 - printfloat\n");
+
+ /*
+ * Hexadecimal rounding
+ */
+ fesetround(FE_TOWARDZERO);
+ testfmt("0X1.23456789ABCP+0", "%.11A", 0x1.23456789abcdep0);
+ testfmt("-0x1.23456p+0", "%.5a", -0x1.23456789abcdep0);
+ testfmt("0x1.23456p+0", "%.5a", 0x1.23456789abcdep0);
+ testfmt("0x1.234567p+0", "%.6a", 0x1.23456789abcdep0);
+ testfmt("-0x1.234566p+0", "%.6a", -0x1.23456689abcdep0);
+
+ fesetround(FE_DOWNWARD);
+ testfmt("0X1.23456789ABCP+0", "%.11A", 0x1.23456789abcdep0);
+ testfmt("-0x1.23457p+0", "%.5a", -0x1.23456789abcdep0);
+ testfmt("0x1.23456p+0", "%.5a", 0x1.23456789abcdep0);
+ testfmt("0x1.234567p+0", "%.6a", 0x1.23456789abcdep0);
+ testfmt("-0x1.234567p+0", "%.6a", -0x1.23456689abcdep0);
+
+ fesetround(FE_UPWARD);
+ testfmt("0X1.23456789ABDP+0", "%.11A", 0x1.23456789abcdep0);
+ testfmt("-0x1.23456p+0", "%.5a", -0x1.23456789abcdep0);
+ testfmt("0x1.23457p+0", "%.5a", 0x1.23456789abcdep0);
+ testfmt("0x1.234568p+0", "%.6a", 0x1.23456789abcdep0);
+ testfmt("-0x1.234566p+0", "%.6a", -0x1.23456689abcdep0);
+
+ fesetround(FE_TONEAREST);
+ testfmt("0x1.23456789abcdep+4", "%a", 0x1.23456789abcdep4);
+ testfmt("0X1.23456789ABDP+0", "%.11A", 0x1.23456789abcdep0);
+ testfmt("-0x1.23456p+0", "%.5a", -0x1.23456789abcdep0);
+ testfmt("0x1.23456p+0", "%.5a", 0x1.23456789abcdep0);
+ testfmt("0x1.234568p+0", "%.6a", 0x1.23456789abcdep0);
+ testfmt("-0x1.234566p+0", "%.6a", -0x1.23456689abcdep0);
+ testfmt("0x2.00p-1030", "%.2a", 0x1.fffp-1030);
+ testfmt("0x2.00p-1027", "%.2a", 0xf.fffp-1030);
+
+ printf("ok 11 - printfloat\n");
+
+ return (0);
+}
+
+void
+smash_stack(void)
+{
+ static uint32_t junk = 0xdeadbeef;
+ uint32_t buf[512];
+ int i;
+
+ for (i = 0; i < sizeof(buf) / sizeof(buf[0]); i++)
+ buf[i] = junk;
+}
+
+void
+_testfmt(const char *result, int line, const char *argstr, const char *fmt,...)
+{
+ char s[100];
+ va_list ap;
+
+ va_start(ap, fmt);
+ smash_stack();
+ vsnprintf(s, sizeof(s), fmt, ap);
+ if (strcmp(result, s) != 0) {
+ fprintf(stderr,
+ "%d: printf(\"%s\", %s) ==> [%s], expected [%s]\n",
+ line, fmt, argstr, s, result);
+ abort();
+ }
+}
diff --git a/tools/regression/lib/libc/stdio/test-printfloat.t b/tools/regression/lib/libc/stdio/test-printfloat.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/test-printfloat.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/stdio/test-scanfloat.c b/tools/regression/lib/libc/stdio/test-scanfloat.c
new file mode 100644
index 0000000..ef6faae
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/test-scanfloat.c
@@ -0,0 +1,293 @@
+/*-
+ * Copyright (C) 2003, 2005 David Schultz <das@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test for scanf() floating point formats.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <fenv.h>
+#include <float.h>
+#include <locale.h>
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+
+#define eq(type, a, b) _eq(type##_EPSILON, (a), (b))
+static int _eq(long double epsilon, long double a, long double b);
+
+extern int __scanfdebug;
+
+int
+main(int argc, char *argv[])
+{
+ char buf[128];
+ long double ld = 0.0;
+ double d = 0.0;
+ float f = 0.0;
+
+ printf("1..3\n");
+
+ buf[0] = '\0';
+ assert(setlocale(LC_NUMERIC, ""));
+
+ __scanfdebug = 1;
+
+ /*
+ * Various tests for normalized numbers
+ */
+ sscanf("3.141592", "%e", &f);
+ assert(eq(FLT, f, 3.141592));
+
+ sscanf("3.141592653589793", "%lf", &d);
+ assert(eq(DBL, d, 3.141592653589793));
+
+ sscanf("1.234568e+06", "%E", &f);
+ assert(eq(FLT, f, 1.234568e+06));
+
+ sscanf("-1.234568e6", "%lF", &d);
+ assert(eq(DBL, d, -1.234568e6));
+
+ sscanf("+1.234568e-52", "%LG", &ld);
+ assert(eq(LDBL, ld, 1.234568e-52L));
+
+ sscanf("0.1", "%la", &d);
+ assert(eq(DBL, d, 0.1));
+
+ sscanf("00.2", "%lA", &d);
+ assert(eq(DBL, d, 0.2));
+
+ sscanf("123456", "%5le%s", &d, buf);
+ assert(eq(DBL, d, 12345.));
+ assert(strcmp(buf, "6") == 0);
+
+ sscanf("1.0Q", "%*5le%s", buf);
+ assert(strcmp(buf, "Q") == 0);
+
+ sscanf("-1.23e", "%e%s", &f, buf);
+ assert(eq(FLT, f, -1.23));
+ assert(strcmp(buf, "e") == 0);
+
+ sscanf("1.25e+", "%le%s", &d, buf);
+ assert(eq(DBL, d, 1.25));
+ assert(strcmp(buf, "e+") == 0);
+
+ sscanf("1.23E4E5", "%le%s", &d, buf);
+ assert(eq(DBL, d, 1.23e4));
+ assert(strcmp(buf, "E5") == 0);
+
+ sscanf("12e6", "%le", &d);
+ assert(eq(DBL, d, 12e6));
+
+ sscanf("1.a", "%le%s", &d, buf);
+ assert(eq(DBL, d, 1.0));
+ assert(strcmp(buf, "a") == 0);
+
+ sscanf(".0p4", "%le%s", &d, buf);
+ assert(eq(DBL, d, 0.0));
+ assert(strcmp(buf, "p4") == 0);
+
+ d = 0.25;
+ assert(sscanf(".", "%le", &d) == 0);
+ assert(d == 0.25);
+
+ sscanf("0x08", "%le", &d);
+ assert(d == 0x8p0);
+
+ sscanf("0x90a.bcdefP+09a", "%le%s", &d, buf);
+ assert(d == 0x90a.bcdefp+09);
+ assert(strcmp(buf, "a") == 0);
+
+#if (LDBL_MANT_DIG > DBL_MANT_DIG) && !defined(__i386__)
+ sscanf("3.14159265358979323846", "%Lg", &ld);
+ assert(eq(LDBL, ld, 3.14159265358979323846L));
+
+ sscanf(" 0X.0123456789abcdefffp-3g", "%Le%s", &ld, buf);
+ assert(ld == 0x0.0123456789abcdefffp-3L);
+ assert(strcmp(buf, "g") == 0);
+#endif
+
+ sscanf("0xg", "%le%s", &d, buf);
+ assert(d == 0.0);
+ assert(strcmp(buf, "xg") == 0);
+
+ assert(setlocale(LC_NUMERIC, "ru_RU.ISO8859-5")); /* decimalpoint==, */
+
+ sscanf("1.23", "%le%s", &d, buf);
+ assert(d == 1.0);
+ assert(strcmp(buf, ".23") == 0);
+
+ sscanf("1,23", "%le", &d);
+ assert(d == 1.23);
+
+ assert(setlocale(LC_NUMERIC, ""));
+
+ printf("ok 1 - scanfloat\n");
+
+ /*
+ * Infinity and NaN tests
+ */
+ sscanf("-Inf", "%le", &d);
+ assert(d < 0.0 && isinf(d));
+
+ sscanf("iNfInItY and beyond", "%le%s", &d, buf);
+ assert(d > 0.0 && isinf(d));
+ assert(strcmp(buf, " and beyond"));
+
+ sscanf("NaN", "%le", &d);
+ assert(isnan(d));
+
+ sscanf("NAN(123Y", "%le%s", &d, buf);
+ assert(isnan(d));
+ assert(strcmp(buf, "(123Y") == 0);
+
+ sscanf("nan(f00f)plugh", "%le%s", &d, buf);
+ assert(isnan(d));
+ assert(strcmp(buf, "plugh") == 0);
+
+ sscanf("-nan", "%le", &d);
+ assert(isnan(d));
+
+ /* Only quiet NaNs should be returned. */
+ sscanf("NaN", "%e", &f);
+ sscanf("nan", "%le", &d);
+ sscanf("nan", "%Le", &ld);
+ feclearexcept(FE_ALL_EXCEPT);
+ assert(f != f);
+ assert(d != d);
+ assert(ld != ld);
+ assert(fetestexcept(FE_INVALID) == 0);
+ sscanf("nan(1234)", "%e", &f);
+ sscanf("nan(1234)", "%le", &d);
+ sscanf("nan(1234)", "%Le", &ld);
+ feclearexcept(FE_ALL_EXCEPT);
+ assert(f != f);
+ assert(d != d);
+ assert(ld != ld);
+#if 0
+ /*
+ * POSIX says we should only generate quiet NaNs, but the gdtoa
+ * author convincingly argues that if you ask for a NaN format
+ * based on some implementation-defined string, you should get
+ * what you asked for, even if it's a signaling NaN.
+ */
+ assert(fetestexcept(FE_INVALID) == 0);
+#endif
+
+ printf("ok 2 - scanfloat\n");
+
+ /*
+ * Rounding tests
+ */
+
+ fesetround(FE_DOWNWARD);
+
+ sscanf("1.999999999999999999999999999999999", "%le", &d);
+ assert(d < 2.0);
+ sscanf("0x1.ffffffffffffffp0", "%le", &d);
+ assert(d < 2.0);
+ sscanf("1.999999999999999999999999999999999", "%Le", &ld);
+ assert(ld < 2.0);
+
+ sscanf("1.0571892669084007", "%le", &d);
+ assert(d == 0x1.0ea3f4af0dc59p0);
+ sscanf("-1.0571892669084007", "%le", &d);
+ assert(d == -0x1.0ea3f4af0dc5ap0);
+ sscanf("1.0571892669084010", "%le", &d);
+ assert(d == 0x1.0ea3f4af0dc5ap0);
+
+ sscanf("0x1.23p-5000", "%le", &d);
+ assert(d == 0.0);
+
+ sscanf("0x1.2345678p-1050", "%le", &d);
+ assert(d == 0x1.234567p-1050);
+
+ fesetround(FE_UPWARD);
+
+ sscanf("1.0571892669084007", "%le", &d);
+ assert(d == 0x1.0ea3f4af0dc5ap0);
+ sscanf("-1.0571892669084007", "%le", &d);
+ assert(d == -0x1.0ea3f4af0dc59p0);
+ sscanf("1.0571892669084010", "%le", &d);
+ assert(d == 0x1.0ea3f4af0dc5bp0);
+
+ sscanf("0x1.23p-5000", "%le", &d);
+ assert(d == 0x1p-1074);
+
+ sscanf("0x1.2345678p-1050", "%le", &d);
+ assert(d == 0x1.234568p-1050);
+
+ fesetround(FE_TOWARDZERO);
+
+ sscanf("1.0571892669084007", "%le", &d);
+ assert(d == 0x1.0ea3f4af0dc59p0);
+ sscanf("-1.0571892669084007", "%le", &d);
+ assert(d == -0x1.0ea3f4af0dc59p0);
+ sscanf("1.0571892669084010", "%le", &d);
+ assert(d == 0x1.0ea3f4af0dc5ap0);
+
+ sscanf("0x1.23p-5000", "%le", &d);
+ assert(d == 0.0);
+
+ sscanf("0x1.2345678p-1050", "%le", &d);
+ assert(d == 0x1.234567p-1050);
+
+ fesetround(FE_TONEAREST);
+
+ /* 1.0571892669084007 is slightly closer to 0x1.0ea3f4af0dc59p0 */
+ sscanf("1.0571892669084007", "%le", &d);
+ assert(d == 0x1.0ea3f4af0dc59p0);
+ sscanf("-1.0571892669084007", "%le", &d);
+ assert(d == -0x1.0ea3f4af0dc59p0);
+ sscanf("1.0571892669084010", "%le", &d);
+ assert(d == 0x1.0ea3f4af0dc5bp0);
+
+ /* strtod() should round small numbers to 0. */
+ sscanf("0x1.23p-5000", "%le", &d);
+ assert(d == 0.0);
+
+ /* Extra digits in a denormal shouldn't break anything. */
+ sscanf("0x1.2345678p-1050", "%le", &d);
+ assert(d == 0x1.234568p-1050);
+
+ printf("ok 3 - scanfloat\n");
+
+ return (0);
+}
+
+static int
+_eq(long double epsilon, long double a, long double b)
+{
+ long double delta;
+
+ delta = a - b;
+ if (delta < 0) /* XXX no fabsl() */
+ delta = -delta;
+ return (delta <= epsilon);
+}
diff --git a/tools/regression/lib/libc/stdio/test-scanfloat.t b/tools/regression/lib/libc/stdio/test-scanfloat.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/stdio/test-scanfloat.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/stdlib/Makefile b/tools/regression/lib/libc/stdlib/Makefile
new file mode 100644
index 0000000..c707795
--- /dev/null
+++ b/tools/regression/lib/libc/stdlib/Makefile
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+TESTS= test-qsort \
+ test-heapsort \
+ test-mergesort
+
+.PHONY: tests
+tests: ${TESTS}
+ for p in ${TESTS}; do ${.OBJDIR}/$$p; done
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/libc/stdlib/test-heapsort.c b/tools/regression/lib/libc/stdlib/test-heapsort.c
new file mode 100644
index 0000000..6ce8924
--- /dev/null
+++ b/tools/regression/lib/libc/stdlib/test-heapsort.c
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (C) 2004 Maxim Sobolev <sobomax@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test for heapsort() routine.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "test-sort.h"
+
+int
+main(int argc, char *argv[])
+{
+ int i, j;
+ int testvector[IVEC_LEN];
+ int sresvector[IVEC_LEN];
+
+ printf("1..1\n");
+ for (j = 2; j < IVEC_LEN; j++) {
+ /* Populate test vectors */
+ for (i = 0; i < j; i++)
+ testvector[i] = sresvector[i] = initvector[i];
+
+ /* Sort using heapsort(3) */
+ heapsort(testvector, j, sizeof(testvector[0]), sorthelp);
+ /* Sort using reference slow sorting routine */
+ ssort(sresvector, j);
+
+ /* Compare results */
+ for (i = 0; i < j; i++)
+ assert(testvector[i] == sresvector[i]);
+ }
+
+ printf("ok 1 - heapsort\n");
+
+ return(0);
+}
diff --git a/tools/regression/lib/libc/stdlib/test-heapsort.t b/tools/regression/lib/libc/stdlib/test-heapsort.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/stdlib/test-heapsort.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/stdlib/test-mergesort.c b/tools/regression/lib/libc/stdlib/test-mergesort.c
new file mode 100644
index 0000000..729d481
--- /dev/null
+++ b/tools/regression/lib/libc/stdlib/test-mergesort.c
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (C) 2004 Maxim Sobolev <sobomax@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test for mergesort() routine.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "test-sort.h"
+
+int
+main(int argc, char *argv[])
+{
+ int i, j;
+ int testvector[IVEC_LEN];
+ int sresvector[IVEC_LEN];
+
+ printf("1..1\n");
+ for (j = 2; j < IVEC_LEN; j++) {
+ /* Populate test vectors */
+ for (i = 0; i < j; i++)
+ testvector[i] = sresvector[i] = initvector[i];
+
+ /* Sort using mergesort(3) */
+ mergesort(testvector, j, sizeof(testvector[0]), sorthelp);
+ /* Sort using reference slow sorting routine */
+ ssort(sresvector, j);
+
+ /* Compare results */
+ for (i = 0; i < j; i++)
+ assert(testvector[i] == sresvector[i]);
+ }
+
+ printf("ok 1 - mergesort\n");
+
+ return(0);
+}
diff --git a/tools/regression/lib/libc/stdlib/test-mergesort.t b/tools/regression/lib/libc/stdlib/test-mergesort.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/stdlib/test-mergesort.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/stdlib/test-qsort.c b/tools/regression/lib/libc/stdlib/test-qsort.c
new file mode 100644
index 0000000..8a508e8
--- /dev/null
+++ b/tools/regression/lib/libc/stdlib/test-qsort.c
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (C) 2004 Maxim Sobolev <sobomax@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test for qsort() routine.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "test-sort.h"
+
+int
+main(int argc, char *argv[])
+{
+ int i, j;
+ int testvector[IVEC_LEN];
+ int sresvector[IVEC_LEN];
+
+ printf("1..1\n");
+ for (j = 2; j < IVEC_LEN; j++) {
+ /* Populate test vectors */
+ for (i = 0; i < j; i++)
+ testvector[i] = sresvector[i] = initvector[i];
+
+ /* Sort using qsort(3) */
+ qsort(testvector, j, sizeof(testvector[0]), sorthelp);
+ /* Sort using reference slow sorting routine */
+ ssort(sresvector, j);
+
+ /* Compare results */
+ for (i = 0; i < j; i++)
+ assert(testvector[i] == sresvector[i]);
+ }
+
+ printf("ok 1 - qsort\n");
+
+ return(0);
+}
diff --git a/tools/regression/lib/libc/stdlib/test-qsort.t b/tools/regression/lib/libc/stdlib/test-qsort.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/stdlib/test-qsort.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libc/stdlib/test-sort.h b/tools/regression/lib/libc/stdlib/test-sort.h
new file mode 100644
index 0000000..e060f72
--- /dev/null
+++ b/tools/regression/lib/libc/stdlib/test-sort.h
@@ -0,0 +1,269 @@
+/*-
+ * Copyright (C) 2004 Maxim Sobolev <sobomax@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _TEST_SORT_H
+#define _TEST_SORT_H
+
+static int
+sorthelp(const void *a, const void *b)
+{
+ const int *oa, *ob;
+
+ oa = a;
+ ob = b;
+ /* Don't use "return *oa - *ob" since it's easy to cause overflow! */
+ if (*oa > *ob)
+ return 1;
+ if (*oa < *ob)
+ return -1;
+ return 0;
+}
+
+/* Reference sorting routine (slooow!) */
+static void
+ssort(int v[], int nmemb)
+{
+ int i, j, k;
+
+ for (i = 0; i < nmemb; i++) {
+ for (j = i + 1; j < nmemb; j++) {
+ if (v[j] < v[i]) {
+ k = v[i];
+ v[i] = v[j];
+ v[j] = k;
+ }
+ }
+ }
+}
+
+/* Some random data */
+static int initvector[1024] = {
+ 599853225, 371951333, -428880425, 1450668530, 85530178, -460170550,
+ -270680269, 717137591, 106244401, -1138072905, -113532586,
+ 599690958, 464993720, 107690177, 24249019, -1151018550, 794225588,
+ 1494905642, -62951716, -734531757, 1197251494, 1020063925,
+ -634536734, -216634704, 617366508, -18840190, 481010395,
+ -1555785724, 128221950, -1747743676, 1119012320, -252160437,
+ 617137855, 1159833073, -106647920, -1570719046, -769400990,
+ -130308848, 1186546396, 215253591, 445832488, 160263176, 777264170,
+ -274636650, -696134447, 1057957088, -626175254, 188632134,
+ -98941793, -1602334908, -373717125, 885013862, 571258221,
+ -399572192, 407761463, -733249776, 12094800, -367046815, 178974501,
+ -452638559, -516580143, -94282073, 1411115180, -1151792797,
+ 1442815268, 1106583674, 515269284, -74019972, 598818901, 696848474,
+ -657910766, -287309335, 1538095746, 143543003, 851444033,
+ -947573348, 296222973, 1339592140, -947505360, 872027891,
+ -418844714, -583075597, -324758197, -964531573, 1016795914,
+ -866842580, -304084402, -286930819, 338975583, 803597943,
+ -452483372, 1525283506, -1185830826, -596405894, 905191340,
+ -1638026278, 106749913, 582771197, -730713796, 56052422,
+ 1498040174, 644967266, 182541575, 280483468, -1932835017,
+ -435546874, 940106007, 1753388509, -340355019, -231577358,
+ -714879035, 1051182949, 204261785, 1321346243, -895289878,
+ -240369893, 566608506, -350777580, -1384849829, -876816409,
+ 1013787299, -1408035937, -222626650, 1708168486, -645148461,
+ 1854654, -393012507, 179327030, -1607975548, -715202732, 730588290,
+ 246968517, -550975254, -101136772, -174103176, 1188941016,
+ 2004650834, -1501389866, -2021225998, 1219042515, -464113898,
+ 268565342, 126451123, -1045877126, -198918003, 310177444,
+ 1578314812, 1828867082, 453336898, -908485523, 749777130,
+ -1028565802, 61360571, 241484853, -175693399, 1816211059,
+ 533940889, -1496933703, 385185125, -821132413, -8923391,
+ -1429546239, 46190992, 449247332, -20432494, 778761611, -178782699,
+ -811194695, -632276211, 70196094, 890817525, -1447776908,
+ -323783741, -62333222, 954929503, 247668507, -1394420605,
+ 367913886, 1364926759, 1298781924, 357923028, -73644747,
+ -319744305, 61718202, -1454549286, 387493522, 2018321449,
+ 861026653, 289973298, 1755939093, -84772204, 43425266, -1325753781,
+ -679938775, 1228500370, -763816405, 548903035, 1765563727,
+ 425183052, 1424621863, -188287424, 554385654, 751831998,
+ 1377088085, 66622090, 139224450, -1305816167, 650140724, 593988868,
+ -444913321, 589045097, 1261428989, 101292769, -780376786,
+ 559307348, 1644593236, -1838606833, 53570301, -680576100,
+ -44969538, 268718267, -632104125, 276904628, 626299449, -11761453,
+ 545899086, -1027343598, -432251872, 539353494, -399575006,
+ -568383580, -677802882, 1296513472, 801202048, 806425805, 1983363,
+ 850487421, 38046173, 1535399484, 1998285544, -1301751898,
+ -46561973, 56545408, -1107662676, 456041145, -452923904,
+ -262219453, -371849200, 392524281, 1650231392, 1185585356,
+ 126610511, -1125389657, 1015981177, -1318481342, -213835789,
+ 1263484054, -654361441, 1408272041, -231555284, -1121778152,
+ -395512897, 332277674, -349703586, 1809474399, -223731607,
+ -1342224737, 736165236, 67535587, 89879082, 471445838, 423788300,
+ -384354470, 907475706, 154886390, -1406736539, -8558766,
+ -203405718, -422127884, 1048520863, 747418501, 87438975, 727668160,
+ -914936981, 428266976, -455742009, -949014605, 487159058,
+ -262526850, -309451504, -76928461, 1072951428, -1370953830,
+ 238231681, -1831047244, -405735199, -35941848, 469048670,
+ 505307987, -660553590, 876537439, -314195871, 999234339,
+ -1405846240, -579885695, 629067031, 863481510, -742301385,
+ -1723403128, -153070386, 782682839, -343111818, -877101810,
+ 1438467302, -319951459, -1585702508, -338381888, 484108815,
+ -1726935191, -749923706, 1657932127, -816151395, -566321865,
+ -133542331, 84961164, 598275578, 1302065347, -533098653,
+ -1766383037, 53169714, -464201288, 617735133, 862536123,
+ -141730724, -1967377125, -1023736305, -1012511106, 64484992,
+ -1250856831, 426409332, -355670055, -298251663, -867634978,
+ -776124819, 74018333, -425385214, -108004251, -1192766130,
+ 1294193867, -109867195, -78667637, 1164855393, -826007552,
+ -522528066, 1160283046, -1095276403, -1218917472, -396475366,
+ -77394733, -425603169, 251928357, -393559355, 1488845184,
+ 898455978, -773338691, -37627855, -345014717, 204298578, 209084274,
+ 1047080643, -414348222, 26496664, 705759824, 575149152, 604904761,
+ 624988690, 1446041250, 1000757225, -1354896151, 1422958189,
+ -1607165311, -832757521, 365074225, 1171764999, 1200795217,
+ -203957828, 23166236, -846818698, -547439867, -790192498,
+ -122123561, 914298013, 66225525, -36163174, -480698856,
+ -1269421818, 624641703, 254923102, 1564329013, -583609221,
+ -649433551, -743396069, 1182455435, 102658744, 285599336,
+ 692480463, -852737563, -660090184, 1374350065, 72300985, 690541659,
+ -1194212957, -1151816525, 157415641, 487398246, 1030153072,
+ 933723020, 1359181027, -1303457764, -1543773272, 774306017,
+ -854382652, 755485667, -864943584, -63242545, -1271480354,
+ 157720215, -205001173, 889984130, -581583822, -473779111,
+ -932136577, 735326252, 428638717, 1888884222, 561493709,
+ -1966427364, -1710208603, 340121869, 918894036, 927172509,
+ 904178436, 1476687667, 90796414, 651591731, -550913123, -42218158,
+ 637756529, 1091478400, 124976584, -48739309, -798898083, 393581349,
+ -1078624722, -789291577, 1010582542, -512317005, 1222773656,
+ 466454593, 1183558811, 822782663, -851624703, -850404012,
+ 1473672600, 852527073, 1073953362, 137635828, 936104739, -86567759,
+ -882563252, 1845232980, -737978404, -104703380, 149802989,
+ -349118325, 1479797538, 1966007488, 1254228842, 414304661,
+ -790805785, 31583329, -76864151, 558202855, -1447047313, 716720607,
+ -404224238, -54107627, 1747385914, -657407390, 202940208,
+ 1083067056, -532861378, 163426933, -130289277, 1301785258,
+ -302920320, -637947485, -644895903, -1668027530, 391890467,
+ -126586485, -536836984, -1154536413, -339505118, -1187229462,
+ -670985870, -601310813, -1350055158, -482479784, 139847714,
+ -253955849, 5190414, -542857077, 1175835684, -584165057,
+ 1132775766, -592091269, -891445655, -340995936, 736395810,
+ 779967964, 515095845, -1138437307, -259226729, -167820100,
+ -801611617, -282451622, -1313679283, -1436126694, 1258773990,
+ -717601098, -583559645, -1307478759, 1238647247, 1589011223,
+ -1029216445, -107030650, 400152690, -1349079913, 1428582247,
+ 21546946, 208807686, -169450574, -1086213374, -1242715198,
+ 669098277, 416626722, -1122525014, -1389466669, -391843085,
+ -56318357, 421040094, 212303518, 738666684, -1185364904,
+ -506192760, 646735912, -1424722633, 745226976, 1019191717,
+ -190891744, -310320868, -373655022, -665117060, 830760000,
+ 583906512, -330536027, 611092636, -321344259, -1255008904,
+ -777959046, -523043472, 88896910, 346062204, -163734816, 336635665,
+ 906060268, -128891583, 740952564, 916767203, 296514859, 198670559,
+ 358136672, -152253676, 12038867, -1469916749, -1020980597,
+ -897143313, 354240970, -97959800, 814172811, 1983363241, 264990663,
+ 105154676, 1060463014, 430172143, 375111946, -824526943,
+ -708877751, -1377442616, -236559551, 684724584, 1602131358,
+ -42140186, -763499840, -605167, 98575879, -376577598, 1689746083,
+ -777973879, -1396984691, -187780326, 281040966, 1858859521,
+ 158395760, 1022807978, -218458812, 811779708, 1495113833,
+ 1192561226, 629539535, -1365196683, -1120253162, 1091681956,
+ 134286445, 1172218369, -34093658, -137087343, -27869226,
+ -180889478, 55705436, 52362743, -1745516232, -926564477,
+ -513701675, -1666272054, 1457952810, 843953275, -478275722,
+ -1240291080, 101859661, -1606687523, 916365333, 314713310,
+ -22002688, 1019022641, -1171741314, -129050627, -211955813,
+ -1020176299, 1357865293, -609819628, 724533854, -1141449545,
+ 22285231, -97731145, -302329687, 191910894, -1300709885,
+ -644951895, 640448036, -1289009824, 1445456129, 846416471,
+ 1821291740, -1639640821, -712724532, -447475807, 132156847,
+ 258067455, 324301319, 278586969, -1544082357, 636007277, 977122066,
+ 127462480, 365126129, 1086276825, -432124148, 896598926,
+ -388550179, 273357331, -845018695, -1089465389, 384439820,
+ -558419772, 1476422025, 730712769, 190665059, -764968927,
+ -789708218, 637873581, 348429858, 1386000168, -638123594,
+ -842010345, -607926448, 19535163, -742771490, -18323344, 246155488,
+ 350409468, 1290907730, -492566468, 300358636, 501876267, 252441807,
+ 1233551975, -1431067042, 517177374, -1540299707, -948380761,
+ 1253997663, 693795998, 148707823, 152894502, 98729538, -30042824,
+ -563057441, 723726409, 367338961, 1395435261, 217868876,
+ 1220652431, 953572083, -1134905155, -734486813, -587470130,
+ -864647866, 1030737023, 781798521, -321076732, -460548153,
+ 122681678, -873728847, -1286304399, -75472885, 113390881,
+ -1556849198, -1070802176, 924389470, 957478910, 5974049, 709413506,
+ 476334647, 572869787, 776298405, -8822420, -99326499, -707855342,
+ -1187216303, 668038414, 262454769, -1120293198, -32011040,
+ 249812104, -101835410, 1082281087, -570183855, -954535179,
+ 1384361473, -983199686, 2017611313, 328926483, -878162849,
+ -1202254181, -225604951, 966898955, 247213529, -1257544612,
+ -197005970, -1039902730, -1947925142, 1752780907, -313410699,
+ -464474556, 416580338, -1063356643, -292212702, 57509168,
+ 1034124629, 1059212593, 468522867, 845369497, 1872717306,
+ -1216544764, -1419907623, 1376869956, -66585488, -1590974467,
+ -367070705, -1456529060, 791844031, 336217635, -1106832215,
+ 1476739427, -751018210, -1411671555, -1880387375, -1714242595,
+ 1169006474, -479442380, -892267555, -1471250266, -267888858,
+ 808634418, 1324777189, -585449929, 1127186951, 468768901,
+ -2002989138, -52352849, 186493053, 1258464606, 117157186,
+ 445919258, 908401949, -1112221136, 863904453, -942718649,
+ 796754809, -38943966, -781978872, -56814078, 1273857459,
+ -1781920832, 209979504, 811828269, -1150814437, 850061883,
+ -532968763, 252506408, -885025629, 391567580, -1295702482,
+ 574894420, 1462248349, 1622584325, -88443443, -1122006092,
+ -169758578, 456282338, -443233309, 436693483, -956563815,
+ -480221349, 435252860, -1114099391, 1060053979, -470893945,
+ -1273682879, -734596176, 639950927, -1278648701, 306274747,
+ -410562146, 1137869228, -1970746553, 1313830798, 1248071822,
+ -247297704, 1015218053, -1607348116, -261817613, -821413148,
+ -782942639, -628711083, 240953091, -629550668, -1584736319,
+ 856616893, -186759752, 197905373, 541638393, 603407919, -278480495,
+ 410077039, 544065371, -1509627427, 402918436, -450463799,
+ -131169308, 249920630, 1079548609, -927911828, 1444577689,
+ -353002528, -224292462, 1247795279, -790844631, -40427503,
+ 59829765, -332587567, 1319862109, -1261340753, 121711726,
+ 1342756342, -643495787, 100326201, -934436714, -69134888,
+ -898880561, -379524737, -577234570, -805827092, -1575493557,
+ -289920678, -476605057, 1235714994, -317239591, 418553949,
+ 410053338, -204985448, 1206503615, 202610372, -932244873,
+ 782207875, -288661931, -806814809, 1270953679, 2060991595,
+ -311412846, 327279979, 1148562672, 55239149, -610114433,
+ -1511688434, 87619740, -433503545, 326150519, -581293393,
+ -97417688, -289736140, -1543886029, -1251976119, 1585774446,
+ 1570011421, 432602745, 486343696, -834680922, 265004849,
+ -1132107706, 502627197, -815873818, 249635389, 1985714127,
+ -1095817653, -130743522, -645266828, -334621094, 199921747,
+ 1059256177, 378031303, 1519740920, 925540689, 1405957844,
+ 1387748290, -56138046, -770637828, -187984510, -1361735163,
+ 1294823206, -608941238, 451860688, -510549867, 1143516283,
+ -779090703, 1459305047, -600335915, -1684168049, 1516622316,
+ -631733335, -4360068, 499778796, 587600402, -1296000335, -37959743,
+ -1084203927, 1162902556, 246374600, -515103645, 341724568,
+ -702303954, 452229900, 485108287, 1170048553, -1510148355,
+ 611133912, 1997927484, -142022671, -724776653, -336090522,
+ 708283514, -1409637378, -2052637687, 376055110, 226628105,
+ -1714452033, -1776158002, 369167930, 1800807012, 710680889,
+ -69951947, -1223849766, -1862239787, 218536127, -656411794,
+ -1202269188, 609634805, -224425858, 519797951, 284223080,
+ 869408930, 270750206, -544967439, 2097168510, 31650971, -600985417,
+ -165303097, -257809088, -1043223971, 1827891621, -156827355,
+ 499719603
+};
+
+#define IVEC_LEN (sizeof(initvector) / sizeof(initvector[0]))
+
+#endif
diff --git a/tools/regression/lib/libc/string/Makefile b/tools/regression/lib/libc/string/Makefile
new file mode 100644
index 0000000..af76f9d
--- /dev/null
+++ b/tools/regression/lib/libc/string/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+CFLAGS+= -I/usr/local/include
+LDFLAGS+= -L/usr/local/lib
+LDLIBS= -ltap
+
+TESTS= test-strerror
+
+.PHONY: tests
+tests: ${TESTS}
+ for p in ${TESTS}; do ${.OBJDIR}/$$p; done
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/libc/string/test-strerror.c b/tools/regression/lib/libc/string/test-strerror.c
new file mode 100644
index 0000000..f5274ed
--- /dev/null
+++ b/tools/regression/lib/libc/string/test-strerror.c
@@ -0,0 +1,130 @@
+/*-
+ * Copyright (c) 2001 Wes Peters <wes@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <tap.h>
+
+int
+main(void)
+{
+ char buf[64];
+ char *sret;
+ int iret;
+
+ plan_tests(25);
+
+ /*
+ * strerror() failure tests.
+ */
+ errno = 0;
+ sret = strerror(0);
+ ok1(strcmp(sret, "Unknown error: 0") == 0);
+ ok1(errno == EINVAL);
+
+ errno = 0;
+ sret = strerror(INT_MAX);
+ snprintf(buf, sizeof(buf), "Unknown error: %d", INT_MAX);
+ ok1(strcmp(sret, buf) == 0);
+ ok1(errno == EINVAL);
+
+ /*
+ * strerror() success tests.
+ */
+ errno = 0;
+ sret = strerror(EPERM);
+ ok1(strcmp(sret, "Operation not permitted") == 0);
+ ok1(errno == 0);
+
+ errno = 0;
+ sret = strerror(EPFNOSUPPORT);
+ ok1(strcmp(sret, "Protocol family not supported") == 0);
+ ok1(errno == 0);
+
+ errno = 0;
+ sret = strerror(ELAST);
+ ok1(errno == 0);
+
+ /*
+ * strerror_r() failure tests.
+ */
+ memset(buf, '*', sizeof(buf));
+ iret = strerror_r(0, buf, sizeof(buf));
+ ok1(strcmp(buf, "Unknown error: 0") == 0);
+ ok1(iret == EINVAL);
+
+ memset(buf, '*', sizeof(buf));
+ /* One byte too short. */
+ iret = strerror_r(EPERM, buf, strlen("Operation not permitted"));
+ ok1(strcmp(buf, "Operation not permitte") == 0);
+ ok1(iret == ERANGE);
+
+ memset(buf, '*', sizeof(buf));
+ /* One byte too short. */
+ iret = strerror_r(-1, buf, strlen("Unknown error: -1"));
+ ok1(strcmp(buf, "Unknown error: -") == 0);
+ ok1(iret == EINVAL);
+
+ memset(buf, '*', sizeof(buf));
+ /* Two bytes too short. */
+ iret = strerror_r(-2, buf, strlen("Unknown error: -2") - 1);
+ ok1(strcmp(buf, "Unknown error: ") == 0);
+ ok1(iret == EINVAL);
+
+ memset(buf, '*', sizeof(buf));
+ /* Three bytes too short. */
+ iret = strerror_r(-2, buf, strlen("Unknown error: -2") - 2);
+ ok1(strcmp(buf, "Unknown error:") == 0);
+ ok1(iret == EINVAL);
+
+ memset(buf, '*', sizeof(buf));
+ /* One byte too short. */
+ iret = strerror_r(12345, buf, strlen("Unknown error: 12345"));
+ ok1(strcmp(buf, "Unknown error: 1234") == 0);
+ ok1(iret == EINVAL);
+
+ /*
+ * strerror_r() success tests.
+ */
+ memset(buf, '*', sizeof(buf));
+ iret = strerror_r(EDEADLK, buf, sizeof(buf));
+ ok1(strcmp(buf, "Resource deadlock avoided") == 0);
+ ok1(iret == 0);
+
+ memset(buf, '*', sizeof(buf));
+ iret = strerror_r(EPROCLIM, buf, sizeof(buf));
+ ok1(strcmp(buf, "Too many processes") == 0);
+ ok1(iret == 0);
+
+ return exit_status();
+}
diff --git a/tools/regression/lib/libc/string/test-strerror.t b/tools/regression/lib/libc/string/test-strerror.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libc/string/test-strerror.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libmp/Makefile b/tools/regression/lib/libmp/Makefile
new file mode 100644
index 0000000..a6f60b6
--- /dev/null
+++ b/tools/regression/lib/libmp/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+TESTS= test-libmp
+CFLAGS+= -g -Wall -lcrypto -lmp
+
+.PHONY: tests
+tests: ${TESTS}
+ for p in ${TESTS}; do ${.OBJDIR}/$$p; done
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/libmp/test-libmp.c b/tools/regression/lib/libmp/test-libmp.c
new file mode 100644
index 0000000..519656a
--- /dev/null
+++ b/tools/regression/lib/libmp/test-libmp.c
@@ -0,0 +1,211 @@
+/*-
+ * Copyright (c) 2006, Simon L. Nielsen <simon@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <mp.h>
+#include <stdio.h>
+#include <string.h>
+#include <sysexits.h>
+
+MINT *c0, *c1, *c2, *c3, *c5, *c6, *c8, *c10, *c14, *c15, *c25, \
+ *c42,*c43, *c44, *c45, *t0, *t1;
+static int tnr = 0;
+
+static void
+testmcmp(const MINT *mp1, const MINT *mp2, const char *tname)
+{
+
+ if (mcmp(mp1, mp2) == 0)
+ printf("ok %d - %s\n", ++tnr, tname);
+ else
+ printf("not ok - %d %s\n", ++tnr, tname);
+}
+
+static int
+testsimpel(void)
+{
+ const char str42[] = "2a";
+ MINT *t2;
+ char *s;
+
+ madd(c42, c1, t0);
+ testmcmp(c43, t0, "madd0");
+ madd(t0, c1, t0);
+ testmcmp(c44, t0, "madd1");
+ msub(t0, c1, t0);
+ testmcmp(c43, t0, "msub0");
+ msub(t0, c1, t0);
+ testmcmp(c42, t0, "msub1");
+ move(c42, t0);
+ testmcmp(c42, t0, "move0");
+
+ t2 = xtom(str42);
+ testmcmp(c42, t2, "xtom");
+ s = mtox(t2);
+ if (strcmp(str42, s) == 0)
+ printf("ok %d - %s\n", ++tnr, "mtox0");
+ else
+ printf("not ok %d - %s\n", ++tnr, "mtox0");
+ mfree(t2);
+}
+
+static int
+testgcd(void)
+{
+
+ gcd(c10, c15, t0);
+ testmcmp(t0, c5, "gcd0");
+}
+
+static int
+testmsqrt(void)
+{
+
+ msqrt(c25, t0, t1);
+ testmcmp(t0, c5, "msqrt0");
+ testmcmp(t1, c0, "msqrt1");
+ msqrt(c42, t0, t1);
+ testmcmp(t0, c6, "msqrt2");
+ testmcmp(t1, c6, "msqrt3");
+}
+
+static int
+testdiv(void)
+{
+ short ro;
+ MINT *t2;
+
+ mdiv(c42, c5, t0, t1);
+ testmcmp(t0, c8, "mdiv0");
+ testmcmp(t1, c2, "mdiv1");
+
+ mdiv(c10, c8, t0, t1);
+ testmcmp(t0, c1, "mdiv2");
+ testmcmp(t1, c2, "mdiv3");
+
+ sdiv(c42, 5, t0, &ro);
+ testmcmp(t0, c8, "sdiv0");
+ t2 = itom(ro); // Simpler to use common testmcmp()
+ testmcmp(t2, c2, "sdiv1");
+ mfree(t2);
+
+ sdiv(c10, 8, t0, &ro);
+ testmcmp(t0, c1, "sdiv2");
+ t2 = itom(ro); // Simpler to use common testmcmp()
+ testmcmp(t2, c2, "sdiv3");
+ mfree(t2);
+}
+
+static int
+testmult(void)
+{
+
+ mult(c5, c2, t0);
+ testmcmp(t0, c10, "mmult0");
+ mult(c3, c14, t0);
+ testmcmp(t0, c42, "mmult1");
+}
+
+static int
+testpow(void)
+{
+
+ pow(c2, c3, c10, t0);
+ testmcmp(t0, c8, "pow0");
+ pow(c2, c3, c3, t0);
+ testmcmp(t0, c2, "pow1");
+ rpow(c2, 3, t0);
+ testmcmp(t0, c8, "rpow0");
+}
+
+/*
+ * This program performs some very basic tests of libmp(3). It is by
+ * no means expected to perform a complete test of the library for
+ * correctness, but is meant to test the API to make sure libmp (or
+ * libcrypto) updates don't totally break the library.
+ */
+int
+main(int argc, char *argv[])
+{
+
+ printf("1..25\n");
+
+ /*
+ * Init "constants" variables - done in this somewhat
+ * cumbersome way to in theory be able to check for memory
+ * leaks.
+ */
+ c0 = itom(0);
+ c1 = itom(1);
+ c2 = itom(2);
+ c3 = itom(3);
+ c5 = itom(5);
+ c6 = itom(6);
+ c8 = itom(8);
+ c10 = itom(10);
+ c14 = itom(14);
+ c15 = itom(15);
+ c25 = itom(25);
+ c42 = itom(42);
+ c43 = itom(43);
+ c44 = itom(44);
+ c45 = itom(45);
+
+ // Init temp variables
+ t0 = itom(0);
+ t1 = itom(0);
+
+ // Run tests
+ testsimpel();
+ testgcd();
+ testdiv();
+ testmult();
+ testpow();
+ testmsqrt();
+
+ // Cleanup
+ mfree(c0);
+ mfree(c1);
+ mfree(c2);
+ mfree(c3);
+ mfree(c5);
+ mfree(c6);
+ mfree(c8);
+ mfree(c10);
+ mfree(c14);
+ mfree(c15);
+ mfree(c25);
+ mfree(c42);
+ mfree(c43);
+ mfree(c44);
+ mfree(c45);
+ mfree(t0);
+ mfree(t1);
+
+ return (EX_OK);
+}
diff --git a/tools/regression/lib/libmp/test-libmp.t b/tools/regression/lib/libmp/test-libmp.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libmp/test-libmp.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libutil/Makefile b/tools/regression/lib/libutil/Makefile
new file mode 100644
index 0000000..05236eb
--- /dev/null
+++ b/tools/regression/lib/libutil/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+TESTS= test-trimdomain test-trimdomain-nodomain
+CFLAGS+= -g -Wall -lutil
+
+.PHONY: tests
+tests: ${TESTS}
+ for p in ${TESTS}; do ${.OBJDIR}/$$p; done
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/libutil/test-trimdomain-nodomain.c b/tools/regression/lib/libutil/test-trimdomain-nodomain.c
new file mode 100644
index 0000000..344bc17
--- /dev/null
+++ b/tools/regression/lib/libutil/test-trimdomain-nodomain.c
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2005 Brooks Davis. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <errno.h>
+#include <libutil.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define TESTDOMAIN ""
+#define TESTHOST "testhost"
+#define TESTFQDN "testhost" TESTDOMAIN
+
+int failures = 0;
+int tests = 0;
+
+/*
+ * Evily override gethostname(3) so trimdomain always gets the same result.
+ * This makes the tests much easier to write and less likely to fail on
+ * oddly configured systems.
+ */
+int gethostname(char *name, size_t namelen)
+{
+ if (strlcpy(name, TESTFQDN, namelen) > namelen) {
+ errno = ENAMETOOLONG;
+ return (-1);
+ }
+ return (0);
+}
+
+void
+testit(const char *input, int hostsize, const char *output, const char *test)
+{
+ char *testhost;
+ const char *expected = (output == NULL) ? input : output;
+
+ testhost = strdup(input);
+ trimdomain(testhost, hostsize < 0 ? strlen(testhost) : hostsize);
+ tests++;
+ if (strcmp(testhost, expected) != 0) {
+ printf("not ok %d - %s\n", tests, test);
+ printf("# %s -> %s (expected %s)\n", input, testhost, expected);
+ } else
+ printf("ok %d - %s\n", tests, test);
+ free(testhost);
+ return;
+}
+
+int
+main (int argc, char **argv)
+{
+
+ printf("1..5\n");
+
+ testit(TESTFQDN, -1, TESTHOST, "self");
+ testit("XXX" TESTDOMAIN, -1, "XXX", "different host, same domain");
+ testit("XXX" TESTDOMAIN, 1, NULL, "short hostsize");
+ testit("bogus.example.net", -1, NULL, "arbitrary host");
+ testit("XXX." TESTFQDN, -1, NULL, "domain is local hostname");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libutil/test-trimdomain-nodomain.t b/tools/regression/lib/libutil/test-trimdomain-nodomain.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libutil/test-trimdomain-nodomain.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/libutil/test-trimdomain.c b/tools/regression/lib/libutil/test-trimdomain.c
new file mode 100644
index 0000000..d1c7823
--- /dev/null
+++ b/tools/regression/lib/libutil/test-trimdomain.c
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2005 Brooks Davis. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <errno.h>
+#include <libutil.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define TESTDOMAIN ".domain.example.com"
+#define TESTHOST "testhost"
+#define TESTFQDN "testhost" TESTDOMAIN
+
+int failures = 0;
+int tests = 0;
+
+/*
+ * Evily override gethostname(3) so trimdomain always gets the same result.
+ * This makes the tests much easier to write and less likely to fail on
+ * oddly configured systems.
+ */
+int gethostname(char *name, size_t namelen)
+{
+ if (strlcpy(name, TESTFQDN, namelen) > namelen) {
+ errno = ENAMETOOLONG;
+ return (-1);
+ }
+ return (0);
+}
+
+void
+testit(const char *input, int hostsize, const char *output, const char *test)
+{
+ char *testhost;
+ const char *expected = (output == NULL) ? input : output;
+
+ testhost = strdup(input);
+ trimdomain(testhost, hostsize < 0 ? strlen(testhost) : hostsize);
+ tests++;
+ if (strcmp(testhost, expected) != 0) {
+ printf("not ok %d - %s\n", tests, test);
+ printf("# %s -> %s (expected %s)\n", input, testhost, expected);
+ } else
+ printf("ok %d - %s\n", tests, test);
+ free(testhost);
+ return;
+}
+
+int
+main (int argc, char **argv)
+{
+
+ printf("1..5\n");
+
+ testit(TESTFQDN, -1, TESTHOST, "self");
+ testit("XXX" TESTDOMAIN, -1, "XXX", "different host, same domain");
+ testit("XXX" TESTDOMAIN, 1, NULL, "short hostsize");
+ testit("bogus.example.net", -1, NULL, "arbitrary host");
+ testit("XXX." TESTFQDN, -1, NULL, "domain is local hostname");
+
+ return (0);
+}
diff --git a/tools/regression/lib/libutil/test-trimdomain.t b/tools/regression/lib/libutil/test-trimdomain.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/libutil/test-trimdomain.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/msun/Makefile b/tools/regression/lib/msun/Makefile
new file mode 100644
index 0000000..696cf30
--- /dev/null
+++ b/tools/regression/lib/msun/Makefile
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+TESTS= test-fenv test-ilogb test-lrint test-lround test-next test-rem
+CFLAGS+= -O0 -lm
+ARCH!= uname -m
+
+.PHONY: tests
+tests: ${TESTS}
+ for p in ${TESTS}; do ${.OBJDIR}/$$p; done
+
+.PHONY: clean
+clean:
+ -rm -f ${TESTS}
diff --git a/tools/regression/lib/msun/test-fenv.c b/tools/regression/lib/msun/test-fenv.c
new file mode 100644
index 0000000..71e8eed
--- /dev/null
+++ b/tools/regression/lib/msun/test-fenv.c
@@ -0,0 +1,549 @@
+/*-
+ * Copyright (c) 2004 David Schultz <das@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test the correctness and C99-compliance of various fenv.h features.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <assert.h>
+#include <err.h>
+#include <fenv.h>
+#include <float.h>
+#include <math.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Implementations are permitted to define additional exception flags
+ * not specified in the standard, so it is not necessarily true that
+ * FE_ALL_EXCEPT == ALL_STD_EXCEPT.
+ */
+#define ALL_STD_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
+ FE_OVERFLOW | FE_UNDERFLOW)
+
+#define NEXCEPTS (sizeof(std_excepts) / sizeof(std_excepts[0]))
+
+static const int std_excepts[] = {
+ FE_INVALID,
+ FE_DIVBYZERO,
+ FE_OVERFLOW,
+ FE_UNDERFLOW,
+ FE_INEXACT,
+};
+
+/* init_exceptsets() initializes this to the power set of std_excepts[] */
+static int std_except_sets[1 << NEXCEPTS];
+
+static void init_exceptsets(void);
+
+static void test_dfl_env(void);
+static void test_fegsetenv(void);
+static void test_fegsetexceptflag(void);
+static void test_masking(void);
+static void test_fegsetround(void);
+static void test_feholdupdate(void);
+static void test_feraiseexcept(void);
+static void test_fetestclearexcept(void);
+
+static int getround(void);
+static void raiseexcept(int excepts);
+static void trap_handler(int sig);
+
+#pragma STDC FENV_ACCESS ON
+
+int
+main(int argc, char *argv[])
+{
+
+ printf("1..8\n");
+ init_exceptsets();
+ test_dfl_env();
+ printf("ok 1 - fenv\n");
+ test_fetestclearexcept();
+ printf("ok 2 - fenv\n");
+ test_fegsetexceptflag();
+ printf("ok 3 - fenv\n");
+ test_feraiseexcept();
+ printf("ok 4 - fenv\n");
+ test_fegsetround();
+ printf("ok 5 - fenv\n");
+ test_fegsetenv();
+ printf("ok 6 - fenv\n");
+ test_masking();
+ printf("ok 7 - fenv\n");
+ test_feholdupdate();
+ printf("ok 8 - fenv\n");
+
+ return (0);
+}
+
+/*
+ * Initialize std_except_sets[] to the power set of std_excepts[]
+ */
+void
+init_exceptsets(void)
+{
+ int i, j, sr;
+
+ for (i = 0; i < 1 << NEXCEPTS; i++) {
+ for (sr = i, j = 0; sr != 0; sr >>= 1, j++)
+ std_except_sets[i] |= std_excepts[j] & ((~sr & 1) - 1);
+ }
+}
+
+/*
+ * This tests checks the default FP environment, so it must be first.
+ * The memcmp() test below may be too much to ask for, since there
+ * could be multiple machine-specific default environments.
+ */
+static void
+test_dfl_env(void)
+{
+#ifndef NO_STRICT_DFL_ENV
+ fenv_t env;
+
+ fegetenv(&env);
+ assert(memcmp(&env, FE_DFL_ENV, sizeof(env)) == 0);
+#endif
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+}
+
+/*
+ * Test fetestexcept() and feclearexcept().
+ */
+static void
+test_fetestclearexcept(void)
+{
+ int excepts, i;
+
+ for (i = 0; i < 1 << NEXCEPTS; i++)
+ assert(fetestexcept(std_except_sets[i]) == 0);
+ for (i = 0; i < 1 << NEXCEPTS; i++) {
+ excepts = std_except_sets[i];
+
+ /* FE_ALL_EXCEPT might be special-cased, as on i386. */
+ raiseexcept(excepts);
+ assert(fetestexcept(excepts) == excepts);
+ assert(feclearexcept(FE_ALL_EXCEPT) == 0);
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+
+ raiseexcept(excepts);
+ assert(fetestexcept(excepts) == excepts);
+ if ((excepts & (FE_UNDERFLOW | FE_OVERFLOW)) != 0) {
+ excepts |= FE_INEXACT;
+ assert((fetestexcept(ALL_STD_EXCEPT) | FE_INEXACT) ==
+ excepts);
+ } else {
+ assert(fetestexcept(ALL_STD_EXCEPT) == excepts);
+ }
+ assert(feclearexcept(excepts) == 0);
+ assert(fetestexcept(ALL_STD_EXCEPT) == 0);
+ }
+}
+
+/*
+ * Test fegetexceptflag() and fesetexceptflag().
+ *
+ * Prerequisites: fetestexcept(), feclearexcept()
+ */
+static void
+test_fegsetexceptflag(void)
+{
+ fexcept_t flag;
+ int excepts, i;
+
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+ for (i = 0; i < 1 << NEXCEPTS; i++) {
+ excepts = std_except_sets[i];
+
+ assert(fegetexceptflag(&flag, excepts) == 0);
+ raiseexcept(ALL_STD_EXCEPT);
+ assert(fesetexceptflag(&flag, excepts) == 0);
+ assert(fetestexcept(ALL_STD_EXCEPT) ==
+ (ALL_STD_EXCEPT ^ excepts));
+
+ assert(fegetexceptflag(&flag, FE_ALL_EXCEPT) == 0);
+ assert(feclearexcept(FE_ALL_EXCEPT) == 0);
+ assert(fesetexceptflag(&flag, excepts) == 0);
+ assert(fetestexcept(ALL_STD_EXCEPT) == 0);
+ assert(fesetexceptflag(&flag, ALL_STD_EXCEPT ^ excepts) == 0);
+ assert(fetestexcept(ALL_STD_EXCEPT) ==
+ (ALL_STD_EXCEPT ^ excepts));
+
+ assert(feclearexcept(FE_ALL_EXCEPT) == 0);
+ }
+}
+
+/*
+ * Test feraiseexcept().
+ *
+ * Prerequisites: fetestexcept(), feclearexcept()
+ */
+static void
+test_feraiseexcept(void)
+{
+ int excepts, i;
+
+ for (i = 0; i < 1 << NEXCEPTS; i++) {
+ excepts = std_except_sets[i];
+
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+ assert(feraiseexcept(excepts) == 0);
+ if ((excepts & (FE_UNDERFLOW | FE_OVERFLOW)) != 0) {
+ excepts |= FE_INEXACT;
+ assert((fetestexcept(ALL_STD_EXCEPT) | FE_INEXACT) ==
+ excepts);
+ } else {
+ assert(fetestexcept(ALL_STD_EXCEPT) == excepts);
+ }
+ assert(feclearexcept(FE_ALL_EXCEPT) == 0);
+ }
+ assert(feraiseexcept(FE_INVALID | FE_DIVBYZERO) == 0);
+ assert(fetestexcept(ALL_STD_EXCEPT) == (FE_INVALID | FE_DIVBYZERO));
+ assert(feraiseexcept(FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT) == 0);
+ assert(fetestexcept(ALL_STD_EXCEPT) == ALL_STD_EXCEPT);
+ assert(feclearexcept(FE_ALL_EXCEPT) == 0);
+}
+
+/*
+ * Test fegetround() and fesetround().
+ */
+static void
+test_fegsetround(void)
+{
+
+ assert(fegetround() == FE_TONEAREST);
+ assert(getround() == FE_TONEAREST);
+ assert(FLT_ROUNDS == 1);
+
+ assert(fesetround(FE_DOWNWARD) == 0);
+ assert(fegetround() == FE_DOWNWARD);
+ assert(getround() == FE_DOWNWARD);
+ assert(FLT_ROUNDS == 3);
+
+ assert(fesetround(FE_UPWARD) == 0);
+ assert(getround() == FE_UPWARD);
+ assert(fegetround() == FE_UPWARD);
+ assert(FLT_ROUNDS == 2);
+
+ assert(fesetround(FE_TOWARDZERO) == 0);
+ assert(getround() == FE_TOWARDZERO);
+ assert(fegetround() == FE_TOWARDZERO);
+ assert(FLT_ROUNDS == 0);
+
+ assert(fesetround(FE_TONEAREST) == 0);
+ assert(getround() == FE_TONEAREST);
+ assert(FLT_ROUNDS == 1);
+
+ assert(feclearexcept(FE_ALL_EXCEPT) == 0);
+}
+
+/*
+ * Test fegetenv() and fesetenv().
+ *
+ * Prerequisites: fetestexcept(), feclearexcept(), fegetround(), fesetround()
+ */
+static void
+test_fegsetenv(void)
+{
+ fenv_t env1, env2;
+ int excepts, i;
+
+ for (i = 0; i < 1 << NEXCEPTS; i++) {
+ excepts = std_except_sets[i];
+
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+ assert(fegetround() == FE_TONEAREST);
+ assert(fegetenv(&env1) == 0);
+
+ /*
+ * fe[gs]etenv() should be able to save and restore
+ * exception flags without the spurious inexact
+ * exceptions that afflict raiseexcept().
+ */
+ raiseexcept(excepts);
+ if ((excepts & (FE_UNDERFLOW | FE_OVERFLOW)) != 0 &&
+ (excepts & FE_INEXACT) == 0)
+ assert(feclearexcept(FE_INEXACT) == 0);
+
+ fesetround(FE_DOWNWARD);
+ assert(fegetenv(&env2) == 0);
+ assert(fesetenv(&env1) == 0);
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+ assert(fegetround() == FE_TONEAREST);
+
+ assert(fesetenv(&env2) == 0);
+ assert(fetestexcept(FE_ALL_EXCEPT) == excepts);
+ assert(fegetround() == FE_DOWNWARD);
+ assert(fesetenv(&env1) == 0);
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+ assert(fegetround() == FE_TONEAREST);
+ }
+}
+
+/*
+ * Test fegetexcept(), fedisableexcept(), and feenableexcept().
+ *
+ * Prerequisites: fetestexcept(), feraiseexcept()
+ */
+static void
+test_masking(void)
+{
+ struct sigaction act;
+ int except, i, pass, raise, status;
+
+ assert((fegetexcept() & ALL_STD_EXCEPT) == 0);
+ assert((feenableexcept(FE_INVALID|FE_OVERFLOW) & ALL_STD_EXCEPT) == 0);
+ assert((feenableexcept(FE_UNDERFLOW) & ALL_STD_EXCEPT) ==
+ (FE_INVALID | FE_OVERFLOW));
+ assert((fedisableexcept(FE_OVERFLOW) & ALL_STD_EXCEPT) ==
+ (FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW));
+ assert((fegetexcept() & ALL_STD_EXCEPT) == (FE_INVALID | FE_UNDERFLOW));
+ assert((fedisableexcept(FE_ALL_EXCEPT) & ALL_STD_EXCEPT) ==
+ (FE_INVALID | FE_UNDERFLOW));
+ assert((fegetexcept() & ALL_STD_EXCEPT) == 0);
+
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = 0;
+ act.sa_handler = trap_handler;
+ for (pass = 0; pass < 2; pass++) {
+ for (i = 0; i < NEXCEPTS; i++) {
+ except = std_excepts[i];
+ /* over/underflow may also raise inexact */
+ if (except == FE_INEXACT)
+ raise = FE_DIVBYZERO | FE_INVALID;
+ else
+ raise = ALL_STD_EXCEPT ^ except;
+
+ /*
+ * We need to fork a child process because
+ * there isn't a portable way to recover from
+ * a floating-point exception.
+ */
+ switch(fork()) {
+ case 0: /* child */
+ assert((fegetexcept() & ALL_STD_EXCEPT) == 0);
+ assert((feenableexcept(except)
+ & ALL_STD_EXCEPT) == 0);
+ assert(fegetexcept() == except);
+ raiseexcept(raise);
+ assert(feraiseexcept(raise) == 0);
+ assert(fetestexcept(ALL_STD_EXCEPT) == raise);
+
+ assert(sigaction(SIGFPE, &act, NULL) == 0);
+ switch (pass) {
+ case 0:
+ raiseexcept(except);
+ case 1:
+ feraiseexcept(except);
+ default:
+ assert(0);
+ }
+ assert(0);
+ default: /* parent */
+ assert(wait(&status) > 0);
+ /*
+ * Avoid assert() here so that it's possible
+ * to examine a failed child's core dump.
+ */
+ if (!WIFEXITED(status))
+ errx(1, "child aborted\n");
+ assert(WEXITSTATUS(status) == 0);
+ break;
+ case -1: /* error */
+ assert(0);
+ }
+ }
+ }
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+}
+
+/*
+ * Test feholdexcept() and feupdateenv().
+ *
+ * Prerequisites: fetestexcept(), fegetround(), fesetround(),
+ * fedisableexcept(), feenableexcept()
+ */
+static void
+test_feholdupdate(void)
+{
+ fenv_t env;
+
+ struct sigaction act;
+ int except, i, pass, status, raise;
+
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = 0;
+ act.sa_handler = trap_handler;
+ for (pass = 0; pass < 2; pass++) {
+ for (i = 0; i < NEXCEPTS; i++) {
+ except = std_excepts[i];
+ /* over/underflow may also raise inexact */
+ if (except == FE_INEXACT)
+ raise = FE_DIVBYZERO | FE_INVALID;
+ else
+ raise = ALL_STD_EXCEPT ^ except;
+
+ /*
+ * We need to fork a child process because
+ * there isn't a portable way to recover from
+ * a floating-point exception.
+ */
+ switch(fork()) {
+ case 0: /* child */
+ /*
+ * We don't want to cause a fatal exception in
+ * the child until the second pass, so we can
+ * check other properties of feupdateenv().
+ */
+ if (pass == 1)
+ assert((feenableexcept(except) &
+ ALL_STD_EXCEPT) == 0);
+ raiseexcept(raise);
+ assert(fesetround(FE_DOWNWARD) == 0);
+ assert(feholdexcept(&env) == 0);
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+ raiseexcept(except);
+ assert(fesetround(FE_UPWARD) == 0);
+
+ if (pass == 1)
+ assert(sigaction(SIGFPE, &act, NULL) ==
+ 0);
+ assert(feupdateenv(&env) == 0);
+ assert(fegetround() == FE_DOWNWARD);
+ assert(fetestexcept(ALL_STD_EXCEPT) ==
+ (except | raise));
+
+ assert(pass == 0);
+ _exit(0);
+ default: /* parent */
+ assert(wait(&status) > 0);
+ /*
+ * Avoid assert() here so that it's possible
+ * to examine a failed child's core dump.
+ */
+ if (!WIFEXITED(status))
+ errx(1, "child aborted\n");
+ assert(WEXITSTATUS(status) == 0);
+ break;
+ case -1: /* error */
+ assert(0);
+ }
+ }
+ }
+ assert(fetestexcept(FE_ALL_EXCEPT) == 0);
+}
+
+/*
+ * Raise a floating-point exception without relying on the standard
+ * library routines, which we are trying to test.
+ *
+ * XXX We can't raise an {over,under}flow without also raising an
+ * inexact exception.
+ */
+static void
+raiseexcept(int excepts)
+{
+ volatile double d;
+
+ /*
+ * With a compiler that supports the FENV_ACCESS pragma
+ * properly, simple expressions like '0.0 / 0.0' should
+ * be sufficient to generate traps. Unfortunately, we
+ * need to bring a volatile variable into the equation
+ * to prevent incorrect optimizations.
+ */
+ if (excepts & FE_INVALID) {
+ d = 0.0;
+ d = 0.0 / d;
+ }
+ if (excepts & FE_DIVBYZERO) {
+ d = 0.0;
+ d = 1.0 / d;
+ }
+ if (excepts & FE_OVERFLOW) {
+ d = DBL_MAX;
+ d *= 2.0;
+ }
+ if (excepts & FE_UNDERFLOW) {
+ d = DBL_MIN;
+ d /= DBL_MAX;
+ }
+ if (excepts & FE_INEXACT) {
+ d = DBL_MIN;
+ d += 1.0;
+ }
+
+ /*
+ * On the x86 (and some other architectures?) the FPU and
+ * integer units are decoupled. We need to execute an FWAIT
+ * or a floating-point instruction to get synchronous exceptions.
+ */
+ d = 1.0;
+ d += 1.0;
+}
+
+/*
+ * Determine the current rounding mode without relying on the fenv
+ * routines. This function may raise an inexact exception.
+ */
+static int
+getround(void)
+{
+ volatile double d;
+
+ /*
+ * This test works just as well with 0.0 - 0.0, except on ia64
+ * where 0.0 - 0.0 gives the wrong sign when rounding downwards.
+ */
+ d = 1.0;
+ d -= 1.0;
+ if (copysign(1.0, d) < 0.0)
+ return (FE_DOWNWARD);
+
+ d = 1.0;
+ if (d + (DBL_EPSILON * 3.0 / 4.0) == 1.0)
+ return (FE_TOWARDZERO);
+ if (d + (DBL_EPSILON * 1.0 / 4.0) > 1.0)
+ return (FE_UPWARD);
+
+ return (FE_TONEAREST);
+}
+
+static void
+trap_handler(int sig)
+{
+
+ assert(sig == SIGFPE);
+ _exit(0);
+}
diff --git a/tools/regression/lib/msun/test-fenv.t b/tools/regression/lib/msun/test-fenv.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/msun/test-fenv.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/msun/test-ilogb.c b/tools/regression/lib/msun/test-ilogb.c
new file mode 100644
index 0000000..a1440c4
--- /dev/null
+++ b/tools/regression/lib/msun/test-ilogb.c
@@ -0,0 +1,83 @@
+/*-
+ * Copyright (c) 2004 Stefan Farfeleder
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <assert.h>
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(void)
+{
+ char buf[128], *end;
+ double d;
+ float f;
+ long double ld;
+ int e, i;
+
+ printf("1..3\n");
+ assert(ilogb(0) == FP_ILOGB0);
+ assert(ilogb(NAN) == FP_ILOGBNAN);
+ assert(ilogb(INFINITY) == INT_MAX);
+ for (e = DBL_MIN_EXP - DBL_MANT_DIG; e < DBL_MAX_EXP; e++) {
+ snprintf(buf, sizeof(buf), "0x1.p%d", e);
+ d = strtod(buf, &end);
+ assert(*end == '\0');
+ i = ilogb(d);
+ assert(i == e);
+ }
+ printf("ok 1 - ilogb\n");
+
+ assert(ilogbf(0) == FP_ILOGB0);
+ assert(ilogbf(NAN) == FP_ILOGBNAN);
+ assert(ilogbf(INFINITY) == INT_MAX);
+ for (e = FLT_MIN_EXP - FLT_MANT_DIG; e < FLT_MAX_EXP; e++) {
+ snprintf(buf, sizeof(buf), "0x1.p%d", e);
+ f = strtof(buf, &end);
+ assert(*end == '\0');
+ i = ilogbf(f);
+ assert(i == e);
+ }
+ printf("ok 2 - ilogbf\n");
+
+ assert(ilogbl(0) == FP_ILOGB0);
+ assert(ilogbl(NAN) == FP_ILOGBNAN);
+ assert(ilogbl(INFINITY) == INT_MAX);
+ for (e = LDBL_MIN_EXP - LDBL_MANT_DIG; e < LDBL_MAX_EXP; e++) {
+ snprintf(buf, sizeof(buf), "0x1.p%d", e);
+ ld = strtold(buf, &end);
+ assert(*end == '\0');
+ i = ilogbl(ld);
+ assert(i == e);
+ }
+ printf("ok 3 - ilogbl\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/msun/test-ilogb.t b/tools/regression/lib/msun/test-ilogb.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/msun/test-ilogb.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/msun/test-lrint.c b/tools/regression/lib/msun/test-lrint.c
new file mode 100644
index 0000000..44bcee7
--- /dev/null
+++ b/tools/regression/lib/msun/test-lrint.c
@@ -0,0 +1,127 @@
+/*-
+ * Copyright (c) 2005 David Schultz <das@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test for lrint(), lrintf(), llrint(), and llrintf().
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+#include <stdio.h>
+
+#define test(func, x, result, excepts) do { \
+ assert(feclearexcept(FE_ALL_EXCEPT) == 0); \
+ assert((func)(x) == (result) || fetestexcept(FE_INVALID)); \
+ assert(fetestexcept(FE_ALL_EXCEPT) == (excepts)); \
+} while (0)
+
+#define testall(x, result, excepts) do { \
+ test(lrint, x, result, excepts); \
+ test(lrintf, x, result, excepts); \
+ test(llrint, x, result, excepts); \
+ test(llrintf, x, result, excepts); \
+} while (0)
+
+#define IGNORE 0
+
+#pragma STDC FENV_ACCESS ON
+
+int
+main(int argc, char *argv[])
+{
+
+ printf("1..1\n");
+
+ assert(fesetround(FE_DOWNWARD) == 0);
+ testall(0.75, 0, FE_INEXACT);
+ testall(-0.5, -1, FE_INEXACT);
+
+ assert(fesetround(FE_TONEAREST) == 0);
+ testall(0.0, 0, 0);
+ testall(0.25, 0, FE_INEXACT);
+ testall(0.5, 0, FE_INEXACT);
+ testall(-2.5, -2, FE_INEXACT);
+ testall(1.0, 1, 0);
+ testall(0x12345000p0, 0x12345000, 0);
+ testall(0x1234.fp0, 0x1235, FE_INEXACT);
+ testall(INFINITY, IGNORE, FE_INVALID);
+ testall(NAN, IGNORE, FE_INVALID);
+
+#if (LONG_MAX == 0x7fffffffl)
+ assert(fesetround(FE_UPWARD) == 0);
+ test(lrint, 0x7fffffff.8p0, IGNORE, FE_INVALID);
+ test(lrint, -0x80000000.4p0, -0x80000000l, FE_INEXACT);
+
+ assert(fesetround(FE_DOWNWARD) == 0);
+ test(lrint, -0x80000000.8p0, IGNORE, FE_INVALID);
+ test(lrint, 0x80000000.0p0, IGNORE, FE_INVALID);
+ test(lrint, 0x7fffffff.4p0, 0x7fffffffl, FE_INEXACT);
+ test(lrintf, 0x80000000.0p0f, IGNORE, FE_INVALID);
+ test(lrintf, 0x7fffff80.0p0f, 0x7fffff80l, 0);
+
+ assert(fesetround(FE_TOWARDZERO) == 0);
+ test(lrint, 0x7fffffff.8p0, 0x7fffffffl, FE_INEXACT);
+ test(lrint, -0x80000000.8p0, -0x80000000l, FE_INEXACT);
+ test(lrint, 0x80000000.0p0, IGNORE, FE_INVALID);
+ test(lrintf, 0x80000000.0p0f, IGNORE, FE_INVALID);
+ test(lrintf, 0x7fffff80.0p0f, 0x7fffff80l, 0);
+#elif (LONG_MAX == 0x7fffffffffffffffll)
+ assert(fesetround(FE_TONEAREST) == 0);
+ test(lrint, 0x8000000000000000.0p0, IGNORE, FE_INVALID);
+ test(lrintf, 0x8000000000000000.0p0f, IGNORE, FE_INVALID);
+ test(lrint, 0x7ffffffffffffc00.0p0, 0x7ffffffffffffc00l, 0);
+ test(lrintf, 0x7fffff8000000000.0p0f, 0x7fffff8000000000l, 0);
+ test(lrint, -0x8000000000000800.0p0, IGNORE, FE_INVALID);
+ test(lrintf, -0x8000010000000000.0p0f, IGNORE, FE_INVALID);
+ test(lrint, -0x8000000000000000.0p0, -0x8000000000000000l, 0);
+ test(lrintf, -0x8000000000000000.0p0f, -0x8000000000000000l, 0);
+#else
+#error "Unsupported long size"
+#endif
+
+#if (LLONG_MAX == 0x7fffffffffffffffLL)
+ assert(fesetround(FE_TONEAREST) == 0);
+ test(llrint, 0x8000000000000000.0p0, IGNORE, FE_INVALID);
+ test(llrintf, 0x8000000000000000.0p0f, IGNORE, FE_INVALID);
+ test(llrint, 0x7ffffffffffffc00.0p0, 0x7ffffffffffffc00ll, 0);
+ test(llrintf, 0x7fffff8000000000.0p0f, 0x7fffff8000000000ll, 0);
+ test(llrint, -0x8000000000000800.0p0, IGNORE, FE_INVALID);
+ test(llrintf, -0x8000010000000000.0p0f, IGNORE, FE_INVALID);
+ test(llrint, -0x8000000000000000.0p0, -0x8000000000000000ll, 0);
+ test(llrintf, -0x8000000000000000.0p0f, -0x8000000000000000ll, 0);
+#else
+#error "Unsupported long long size"
+#endif
+
+ printf("ok 1 - lrint\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/msun/test-lrint.t b/tools/regression/lib/msun/test-lrint.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/msun/test-lrint.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/msun/test-lround.c b/tools/regression/lib/msun/test-lround.c
new file mode 100644
index 0000000..4904abe
--- /dev/null
+++ b/tools/regression/lib/msun/test-lround.c
@@ -0,0 +1,110 @@
+/*-
+ * Copyright (c) 2005 David Schultz <das@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test for lround(), lroundf(), llround(), and llroundf().
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <fenv.h>
+#include <limits.h>
+#include <math.h>
+#include <stdio.h>
+
+#define test(func, x, result, excepts) do { \
+ assert(feclearexcept(FE_ALL_EXCEPT) == 0); \
+ assert((func)(x) == (result) || fetestexcept(FE_INVALID)); \
+ assert(fetestexcept(FE_ALL_EXCEPT) == (excepts)); \
+} while (0)
+
+#define testall(x, result, excepts) do { \
+ test(lround, x, result, excepts); \
+ test(lroundf, x, result, excepts); \
+ test(llround, x, result, excepts); \
+ test(llroundf, x, result, excepts); \
+} while (0)
+
+#define IGNORE 0
+
+#pragma STDC FENV_ACCESS ON
+
+int
+main(int argc, char *argv[])
+{
+
+ printf("1..1\n");
+
+ testall(0.0, 0, 0);
+ testall(0.25, 0, FE_INEXACT);
+ testall(0.5, 1, FE_INEXACT);
+ testall(-0.5, -1, FE_INEXACT);
+ testall(1.0, 1, 0);
+ testall(0x12345000p0, 0x12345000, 0);
+ testall(0x1234.fp0, 0x1235, FE_INEXACT);
+ testall(INFINITY, IGNORE, FE_INVALID);
+ testall(NAN, IGNORE, FE_INVALID);
+
+#if (LONG_MAX == 0x7fffffffl)
+ test(lround, 0x7fffffff.8p0, IGNORE, FE_INVALID);
+ test(lround, -0x80000000.8p0, IGNORE, FE_INVALID);
+ test(lround, 0x80000000.0p0, IGNORE, FE_INVALID);
+ test(lround, 0x7fffffff.4p0, 0x7fffffffl, FE_INEXACT);
+ test(lround, -0x80000000.4p0, -0x80000000l, FE_INEXACT);
+ test(lroundf, 0x80000000.0p0f, IGNORE, FE_INVALID);
+ test(lroundf, 0x7fffff80.0p0f, 0x7fffff80l, 0);
+#elif (LONG_MAX == 0x7fffffffffffffffll)
+ test(lround, 0x8000000000000000.0p0, IGNORE, FE_INVALID);
+ test(lroundf, 0x8000000000000000.0p0f, IGNORE, FE_INVALID);
+ test(lround, 0x7ffffffffffffc00.0p0, 0x7ffffffffffffc00l, 0);
+ test(lroundf, 0x7fffff8000000000.0p0f, 0x7fffff8000000000l, 0);
+ test(lround, -0x8000000000000800.0p0, IGNORE, FE_INVALID);
+ test(lroundf, -0x8000010000000000.0p0f, IGNORE, FE_INVALID);
+ test(lround, -0x8000000000000000.0p0, -0x8000000000000000l, 0);
+ test(lroundf, -0x8000000000000000.0p0f, -0x8000000000000000l, 0);
+#else
+#error "Unsupported long size"
+#endif
+
+#if (LLONG_MAX == 0x7fffffffffffffffLL)
+ test(llround, 0x8000000000000000.0p0, IGNORE, FE_INVALID);
+ test(llroundf, 0x8000000000000000.0p0f, IGNORE, FE_INVALID);
+ test(llround, 0x7ffffffffffffc00.0p0, 0x7ffffffffffffc00ll, 0);
+ test(llroundf, 0x7fffff8000000000.0p0f, 0x7fffff8000000000ll, 0);
+ test(llround, -0x8000000000000800.0p0, IGNORE, FE_INVALID);
+ test(llroundf, -0x8000010000000000.0p0f, IGNORE, FE_INVALID);
+ test(llround, -0x8000000000000000.0p0, -0x8000000000000000ll, 0);
+ test(llroundf, -0x8000000000000000.0p0f, -0x8000000000000000ll, 0);
+#else
+#error "Unsupported long long size"
+#endif
+
+ printf("ok 1 - lround\n");
+
+ return (0);
+}
diff --git a/tools/regression/lib/msun/test-lround.t b/tools/regression/lib/msun/test-lround.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/msun/test-lround.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/msun/test-next.c b/tools/regression/lib/msun/test-next.c
new file mode 100644
index 0000000..c8dd072
--- /dev/null
+++ b/tools/regression/lib/msun/test-next.c
@@ -0,0 +1,261 @@
+/*-
+ * Copyright (c) 2005 David Schultz <das@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test the correctness of nextafter{,f,l} and nexttoward{,f,l}.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <fenv.h>
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef __i386__
+#include <ieeefp.h>
+#endif
+
+#define ALL_STD_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID |\
+ FE_OVERFLOW | FE_UNDERFLOW)
+#define test(exp, ans, ex) do { \
+ double __ans = (ans); \
+ feclearexcept(ALL_STD_EXCEPT); \
+ _testl(#exp, __LINE__, (exp), __ans, (ex)); \
+} while (0)
+#define testf(exp, ans, ex) do { \
+ float __ans = (ans); \
+ feclearexcept(ALL_STD_EXCEPT); \
+ _testl(#exp, __LINE__, (exp), __ans, (ex)); \
+} while (0)
+#define testl(exp, ans, ex) do { \
+ long double __ans = (ans); \
+ feclearexcept(ALL_STD_EXCEPT); \
+ _testl(#exp, __LINE__, (exp), __ans, (ex)); \
+} while (0)
+#define testboth(arg1, arg2, ans, ex, prec) do { \
+ test##prec(nextafter##prec((arg1), (arg2)), (ans), (ex)); \
+ test##prec(nexttoward##prec((arg1), (arg2)), (ans), (ex)); \
+} while (0)
+#define testall(arg1, arg2, ans, ex) do { \
+ testboth((arg1), (arg2), (ans), (ex), ); \
+ testboth((arg1), (arg2), (ans), (ex), f); \
+ testboth((arg1), (arg2), (ans), (ex), l); \
+} while (0)
+
+static void _testl(const char *, int, long double, long double, int);
+static double idd(double);
+static float idf(float);
+
+int
+main(int argc, char *argv[])
+{
+ static const int ex_under = FE_UNDERFLOW | FE_INEXACT; /* shorthand */
+ static const int ex_over = FE_OVERFLOW | FE_INEXACT;
+ long double ldbl_eps;
+
+ printf("1..5\n");
+
+#ifdef __i386__
+ fpsetprec(FP_PE);
+#endif
+ /*
+ * We can't use a compile-time constant here because gcc on
+ * FreeBSD/i386 assumes long doubles are truncated to the
+ * double format.
+ */
+ ldbl_eps = ldexpl(1.0, LDBL_MIN_EXP - LDBL_MANT_DIG);
+
+ /*
+ * Special cases involving zeroes.
+ */
+#define ztest(prec) \
+ test##prec(copysign##prec(1.0, nextafter##prec(0.0, -0.0)), -1.0, 0); \
+ test##prec(copysign##prec(1.0, nextafter##prec(-0.0, 0.0)), 1.0, 0); \
+ test##prec(copysign##prec(1.0, nexttoward##prec(0.0, -0.0)), -1.0, 0);\
+ test##prec(copysign##prec(1.0, nexttoward##prec(-0.0, 0.0)), 1.0, 0)
+
+ ztest();
+ ztest(f);
+ ztest(l);
+#undef ztest
+
+#define stest(next, eps, prec) \
+ test##prec(next(-0.0, 42.0), eps, ex_under); \
+ test##prec(next(0.0, -42.0), -eps, ex_under); \
+ test##prec(next(0.0, INFINITY), eps, ex_under); \
+ test##prec(next(-0.0, -INFINITY), -eps, ex_under)
+
+ stest(nextafter, 0x1p-1074, );
+ stest(nextafterf, 0x1p-149f, f);
+ stest(nextafterl, ldbl_eps, l);
+ stest(nexttoward, 0x1p-1074, );
+ stest(nexttowardf, 0x1p-149f, f);
+ stest(nexttowardl, ldbl_eps, l);
+#undef stest
+
+ printf("ok 1 - next\n");
+
+ /*
+ * `x == y' and NaN tests
+ */
+ testall(42.0, 42.0, 42.0, 0);
+ testall(-42.0, -42.0, -42.0, 0);
+ testall(INFINITY, INFINITY, INFINITY, 0);
+ testall(-INFINITY, -INFINITY, -INFINITY, 0);
+ testall(NAN, 42.0, NAN, 0);
+ testall(42.0, NAN, NAN, 0);
+ testall(NAN, NAN, NAN, 0);
+
+ printf("ok 2 - next\n");
+
+ /*
+ * Tests where x is an ordinary normalized number
+ */
+ testboth(1.0, 2.0, 1.0 + DBL_EPSILON, 0, );
+ testboth(1.0, -INFINITY, 1.0 - DBL_EPSILON/2, 0, );
+ testboth(1.0, 2.0, 1.0 + FLT_EPSILON, 0, f);
+ testboth(1.0, -INFINITY, 1.0 - FLT_EPSILON/2, 0, f);
+ testboth(1.0, 2.0, 1.0 + LDBL_EPSILON, 0, l);
+ testboth(1.0, -INFINITY, 1.0 - LDBL_EPSILON/2, 0, l);
+
+ testboth(-1.0, 2.0, -1.0 + DBL_EPSILON/2, 0, );
+ testboth(-1.0, -INFINITY, -1.0 - DBL_EPSILON, 0, );
+ testboth(-1.0, 2.0, -1.0 + FLT_EPSILON/2, 0, f);
+ testboth(-1.0, -INFINITY, -1.0 - FLT_EPSILON, 0, f);
+ testboth(-1.0, 2.0, -1.0 + LDBL_EPSILON/2, 0, l);
+ testboth(-1.0, -INFINITY, -1.0 - LDBL_EPSILON, 0, l);
+
+ /* Cases where nextafter(...) != nexttoward(...) */
+ test(nexttoward(1.0, 1.0 + LDBL_EPSILON), 1.0 + DBL_EPSILON, 0);
+ testf(nexttowardf(1.0, 1.0 + LDBL_EPSILON), 1.0 + FLT_EPSILON, 0);
+ testl(nexttowardl(1.0, 1.0 + LDBL_EPSILON), 1.0 + LDBL_EPSILON, 0);
+
+ printf("ok 3 - next\n");
+
+ /*
+ * Tests at word boundaries, normalization boundaries, etc.
+ */
+ testboth(0x1.87654ffffffffp+0, INFINITY, 0x1.87655p+0, 0, );
+ testboth(0x1.87655p+0, -INFINITY, 0x1.87654ffffffffp+0, 0, );
+ testboth(0x1.fffffffffffffp+0, INFINITY, 0x1p1, 0, );
+ testboth(0x1p1, -INFINITY, 0x1.fffffffffffffp+0, 0, );
+ testboth(0x0.fffffffffffffp-1022, INFINITY, 0x1p-1022, 0, );
+ testboth(0x1p-1022, -INFINITY, 0x0.fffffffffffffp-1022, ex_under, );
+
+ testboth(0x1.fffffep0f, INFINITY, 0x1p1, 0, f);
+ testboth(0x1p1, -INFINITY, 0x1.fffffep0f, 0, f);
+ testboth(0x0.fffffep-126f, INFINITY, 0x1p-126f, 0, f);
+ testboth(0x1p-126f, -INFINITY, 0x0.fffffep-126f, ex_under, f);
+
+#if LDBL_MANT_DIG == 53
+ testboth(0x1.87654ffffffffp+0L, INFINITY, 0x1.87655p+0L, 0, l);
+ testboth(0x1.87655p+0L, -INFINITY, 0x1.87654ffffffffp+0L, 0, l);
+ testboth(0x1.fffffffffffffp+0L, INFINITY, 0x1p1L, 0, l);
+ testboth(0x1p1L, -INFINITY, 0x1.fffffffffffffp+0L, 0, l);
+ testboth(0x0.fffffffffffffp-1022L, INFINITY, 0x1p-1022L, 0, l);
+ testboth(0x1p-1022L, -INFINITY, 0x0.fffffffffffffp-1022L, ex_under, l);
+#elif LDBL_MANT_DIG == 64
+ testboth(0x1.87654321fffffffep+0L, INFINITY, 0x1.87654322p+0L, 0, l);
+ testboth(0x1.87654322p+0L, -INFINITY, 0x1.87654321fffffffep+0L, 0, l);
+ testboth(0x1.fffffffffffffffep0L, INFINITY, 0x1p1L, 0, l);
+ testboth(0x1p1L, -INFINITY, 0x1.fffffffffffffffep0L, 0, l);
+ testboth(0x0.fffffffffffffffep-16382L, INFINITY, 0x1p-16382L, 0, l);
+ testboth(0x1p-16382L, -INFINITY,
+ 0x0.fffffffffffffffep-16382L, ex_under, l);
+#elif LDBL_MANT_DIG == 113
+ testboth(0x1.876543210987ffffffffffffffffp+0L, INFINITY,
+ 0x1.876543210988p+0, 0, l);
+ testboth(0x1.876543210988p+0L, -INFINITY,
+ 0x1.876543210987ffffffffffffffffp+0L, 0, l);
+ testboth(0x1.ffffffffffffffffffffffffffffp0L, INFINITY, 0x1p1L, 0, l);
+ testboth(0x1p1L, -INFINITY, 0x1.ffffffffffffffffffffffffffffp0L, 0, l);
+ testboth(0x0.ffffffffffffffffffffffffffffp-16382L, INFINITY,
+ 0x1p-16382L, 0, l);
+ testboth(0x1p-16382L, -INFINITY,
+ 0x0.ffffffffffffffffffffffffffffp-16382L, ex_under, l);
+#endif
+
+ printf("ok 4 - next\n");
+
+ /*
+ * Overflow tests
+ */
+ test(idd(nextafter(DBL_MAX, INFINITY)), INFINITY, ex_over);
+ test(idd(nextafter(INFINITY, 0.0)), DBL_MAX, 0);
+ test(idd(nexttoward(DBL_MAX, DBL_MAX * 2.0L)), INFINITY, ex_over);
+ test(idd(nexttoward(INFINITY, DBL_MAX * 2.0L)), DBL_MAX, 0);
+
+ testf(idf(nextafterf(FLT_MAX, INFINITY)), INFINITY, ex_over);
+ testf(idf(nextafterf(INFINITY, 0.0)), FLT_MAX, 0);
+ testf(idf(nexttowardf(FLT_MAX, FLT_MAX * 2.0)), INFINITY, ex_over);
+ testf(idf(nexttowardf(INFINITY, FLT_MAX * 2.0)), FLT_MAX, 0);
+
+ testboth(LDBL_MAX, INFINITY, INFINITY, ex_over, l);
+ testboth(INFINITY, 0.0, LDBL_MAX, 0, l);
+
+ printf("ok 5 - next\n");
+
+ return (0);
+}
+
+static void
+_testl(const char *exp, int line, long double actual, long double expected,
+ int except)
+{
+ int actual_except;
+
+ actual_except = fetestexcept(ALL_STD_EXCEPT);
+ if (actual != expected && !(isnan(actual) && isnan(expected))) {
+ fprintf(stderr, "%d: %s returned %La, expecting %La\n",
+ line, exp, actual, expected);
+ abort();
+ }
+ if (actual_except != except) {
+ fprintf(stderr, "%d: %s raised 0x%x, expecting 0x%x\n",
+ line, exp, actual_except, except);
+ abort();
+ }
+}
+
+/*
+ * The idd() and idf() routines ensure that doubles and floats are
+ * converted to their respective types instead of stored in the FPU
+ * with extra precision.
+ */
+static double
+idd(double x)
+{
+ return (x);
+}
+
+static float
+idf(float x)
+{
+ return (x);
+}
diff --git a/tools/regression/lib/msun/test-next.t b/tools/regression/lib/msun/test-next.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/msun/test-next.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/lib/msun/test-rem.c b/tools/regression/lib/msun/test-rem.c
new file mode 100644
index 0000000..a4b09c9
--- /dev/null
+++ b/tools/regression/lib/msun/test-rem.c
@@ -0,0 +1,151 @@
+/*-
+ * Copyright (c) 2005 David Schultz <das@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test for remainder functions: remainder, remainderf, remquo, remquof.
+ * Missing tests: fmod, fmodf.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <assert.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <strings.h>
+
+static void test_invalid(double, double);
+static void testd(double, double, double, int);
+static void testf(float, float, float, int);
+
+#define test(x, y, e_r, e_q) do { \
+ testd(x, y, e_r, e_q); \
+ testf(x, y, e_r, e_q); \
+} while (0)
+
+int
+main(int argc, char *argv[])
+{
+
+ printf("1..2\n");
+
+ test_invalid(0.0, 0.0);
+ test_invalid(1.0, 0.0);
+ test_invalid(INFINITY, 0.0);
+ test_invalid(INFINITY, 1.0);
+ test_invalid(-INFINITY, 1.0);
+ test_invalid(NAN, 1.0);
+ test_invalid(1.0, NAN);
+
+ test(4, 4, 0, 1);
+ test(0, 3.0, 0, 0);
+ testd(0x1p-1074, 1, 0x1p-1074, 0x1p-1074);
+ testf(0x1p-149, 1, 0x1p-149, 0x1p-149);
+ test(3.0, 4, -1, 1);
+ test(3.0, -4, -1, -1);
+ testd(275 * 1193040, 275, 0, 1193040);
+ test(4.5 * 7.5, 4.5, -2.25, 8); /* we should get the even one */
+ testf(0x1.9044f6p-1, 0x1.ce662ep-1, -0x1.f109cp-4, 1);
+
+ printf("ok 1 - rem\n");
+
+ /*
+ * The actual quotient here is 864062210.50000003..., but
+ * double-precision division gets -8.64062210.5, which rounds
+ * the wrong way. This test ensures that remquo() is smart
+ * enough to get the low-order bit right.
+ */
+ testd(-0x1.98260f22fc6dep-302, 0x1.fb3167c430a13p-332,
+ 0x1.fb3165b82de72p-333, -864062211);
+ /* Even harder cases with greater exponent separation */
+ test(0x1.fp100, 0x1.ep-40, -0x1.cp-41, 143165577);
+ testd(-0x1.abcdefp120, 0x1.87654321p-120,
+ -0x1.69c78ec4p-121, -63816414);
+
+ printf("ok 2 - rem\n");
+
+ return (0);
+}
+
+static void
+test_invalid(double x, double y)
+{
+ int q;
+
+ q = 0xdeadbeef;
+
+ assert(isnan(remainder(x, y)));
+ assert(isnan(remquo(x, y, &q)));
+#ifdef STRICT
+ assert(q == 0xdeadbeef);
+#endif
+
+ assert(isnan(remainderf(x, y)));
+ assert(isnan(remquof(x, y, &q)));
+#ifdef STRICT
+ assert(q == 0xdeadbeef);
+#endif
+}
+
+/* 0x012345 ==> 0x01ffff */
+static inline int
+mask(int x)
+{
+ return ((unsigned)~0 >> (32 - fls(x)));
+}
+
+static void
+testd(double x, double y, double expected_rem, int expected_quo)
+{
+ int q;
+
+ q = random();
+ assert(remainder(x, y) == expected_rem);
+ assert(remquo(x, y, &q) == expected_rem);
+ assert((q & 0x7) == (expected_quo & 0x7));
+ if (q != 0) {
+ assert((q > 0) ^ !(expected_quo > 0));
+ q = abs(q);
+ assert(q == (abs(expected_quo) & mask(q)));
+ }
+}
+
+static void
+testf(float x, float y, float expected_rem, int expected_quo)
+{
+ int q;
+
+ q = random();
+ assert(remainderf(x, y) == expected_rem);
+ assert(remquof(x, y, &q) == expected_rem);
+ assert((q & 0x7) == (expected_quo & 0x7));
+ if (q != 0) {
+ assert((q > 0) ^ !(expected_quo > 0));
+ q = abs(q);
+ assert((q & mask(q)) == (abs(expected_quo) & mask(q)));
+ }
+}
diff --git a/tools/regression/lib/msun/test-rem.t b/tools/regression/lib/msun/test-rem.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/lib/msun/test-rem.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/mac/mac_bsdextended/Makefile b/tools/regression/mac/mac_bsdextended/Makefile
new file mode 100644
index 0000000..e19d62d
--- /dev/null
+++ b/tools/regression/mac/mac_bsdextended/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG= test_ugidfw
+DPADD= ${LIBUGIDFW}
+LDADD= -lugidfw
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/mac/mac_bsdextended/test_matches.sh b/tools/regression/mac/mac_bsdextended/test_matches.sh
new file mode 100644
index 0000000..99d6b62
--- /dev/null
+++ b/tools/regression/mac/mac_bsdextended/test_matches.sh
@@ -0,0 +1,167 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+uidrange="60000:100000"
+gidrange="60000:100000"
+uidinrange="nobody"
+uidoutrange="daemon"
+gidinrange="nobody" # We expect $uidinrange in this group
+gidoutrange="daemon" # We expect $uidinrange in this group
+
+playground="/stuff/nobody/" # Must not be on root fs
+
+#
+# Setup
+#
+rm -f $playground/test*
+ugidfw remove 1
+
+file1=$playground/test-$uidinrange
+file2=$playground/test-$uidoutrange
+cat <<EOF> $playground/test-script.pl
+if (open(F, ">" . shift)) { exit 0; } else { exit 1; }
+EOF
+command1="perl $playground/test-script.pl $file1"
+command2="perl $playground/test-script.pl $file2"
+
+echo -n "$uidinrange file: "
+su -m $uidinrange -c "$command1 && echo good"
+chown "$uidinrange":"$gidinrange" $file1
+chmod a+w $file1
+
+echo -n "$uidoutrange file: "
+$command2 && echo good
+chown "$uidoutrange":"$gidoutrange" $file2
+chmod a+w $file2
+
+#
+# No rules
+#
+echo -n "no rules $uidinrange: "
+su -fm $uidinrange -c "$command1 && echo good"
+echo -n "no rules $uidoutrange: "
+su -fm $uidoutrange -c "$command1 && echo good"
+
+#
+# Subject Match on uid
+#
+ugidfw set 1 subject uid $uidrange object mode rasx
+echo -n "subject uid in range: "
+su -fm $uidinrange -c "$command1 || echo good"
+echo -n "subject uid out range: "
+su -fm $uidoutrange -c "$command1 && echo good"
+
+#
+# Subject Match on gid
+#
+ugidfw set 1 subject gid $gidrange object mode rasx
+echo -n "subject gid in range: "
+su -fm $uidinrange -c "$command1 || echo good"
+echo -n "subject gid out range: "
+su -fm $uidoutrange -c "$command1 && echo good"
+
+#
+# Subject Match on jail
+#
+echo -n "subject matching jailid: "
+rm -f $playground/test-jail
+jailid=`jail -i / localhost 127.0.0.1 /usr/sbin/daemon -f /bin/sh -c "(sleep 3; touch $playground/test-jail) &"`
+ugidfw set 1 subject jailid $jailid object mode rasx
+sleep 6
+if [ ! -f $playground/test-jail ] ; then echo good ; fi
+
+echo -n "subject nonmatching jailid: "
+rm -f $playground/test-jail
+jailid=`jail -i / localhost 127.0.0.1 /usr/sbin/daemon -f /bin/sh -c "(sleep 3; touch $playground/test-jail) &"`
+sleep 6
+if [ -f $playground/test-jail ] ; then echo good ; fi
+
+#
+# Object uid
+#
+ugidfw set 1 subject object uid $uidrange mode rasx
+echo -n "object uid in range: "
+su -fm $uidinrange -c "$command1 || echo good"
+echo -n "object uid out range: "
+su -fm $uidinrange -c "$command2 && echo good"
+ugidfw set 1 subject object uid $uidrange mode rasx
+echo -n "object uid in range (differennt subject): "
+su -fm $uidoutrange -c "$command1 || echo good"
+echo -n "object uid out range (differennt subject): "
+su -fm $uidoutrange -c "$command2 && echo good"
+
+#
+# Object gid
+#
+ugidfw set 1 subject object gid $uidrange mode rasx
+echo -n "object gid in range: "
+su -fm $uidinrange -c "$command1 || echo good"
+echo -n "object gid out range: "
+su -fm $uidinrange -c "$command2 && echo good"
+echo -n "object gid in range (differennt subject): "
+su -fm $uidoutrange -c "$command1 || echo good"
+echo -n "object gid out range (differennt subject): "
+su -fm $uidoutrange -c "$command2 && echo good"
+
+#
+# Object filesys
+#
+ugidfw set 1 subject uid $uidrange object filesys / mode rasx
+echo -n "object out of filesys: "
+su -fm $uidinrange -c "$command1 && echo good"
+ugidfw set 1 subject uid $uidrange object filesys $playground mode rasx
+echo -n "object in filesys: "
+su -fm $uidinrange -c "$command1 || echo good"
+
+#
+# Object suid
+#
+ugidfw set 1 subject uid $uidrange object suid mode rasx
+echo -n "object notsuid: "
+su -fm $uidinrange -c "$command1 && echo good"
+chmod u+s $file1
+echo -n "object suid: "
+su -fm $uidinrange -c "$command1 || echo good"
+chmod u-s $file1
+
+#
+# Object sgid
+#
+ugidfw set 1 subject uid $uidrange object sgid mode rasx
+echo -n "object notsgid: "
+su -fm $uidinrange -c "$command1 && echo good"
+chmod g+s $file1
+echo -n "object sgid: "
+su -fm $uidinrange -c "$command1 || echo good"
+chmod g-s $file1
+
+#
+# Object uid matches subject
+#
+ugidfw set 1 subject uid $uidrange object uid_of_subject mode rasx
+echo -n "object uid notmatches subject: "
+su -fm $uidinrange -c "$command2 && echo good"
+echo -n "object uid matches subject: "
+su -fm $uidinrange -c "$command1 || echo good"
+
+#
+# Object gid matches subject
+#
+ugidfw set 1 subject uid $uidrange object gid_of_subject mode rasx
+echo -n "object gid notmatches subject: "
+su -fm $uidinrange -c "$command2 && echo good"
+echo -n "object gid matches subject: "
+su -fm $uidinrange -c "$command1 || echo good"
+
+#
+# Object type
+#
+ugidfw set 1 subject uid $uidrange object type dbclsp mode rasx
+echo -n "object not type: "
+su -fm $uidinrange -c "$command1 && echo good"
+ugidfw set 1 subject uid $uidrange object type r mode rasx
+echo -n "object type: "
+su -fm $uidinrange -c "$command1 || echo good"
+
diff --git a/tools/regression/mac/mac_bsdextended/test_ugidfw.c b/tools/regression/mac/mac_bsdextended/test_ugidfw.c
new file mode 100644
index 0000000..63e25f0
--- /dev/null
+++ b/tools/regression/mac/mac_bsdextended/test_ugidfw.c
@@ -0,0 +1,238 @@
+/*-
+ * Copyright (c) 2005 McAfee, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/mac.h>
+#include <sys/mount.h>
+
+#include <security/mac_bsdextended/mac_bsdextended.h>
+
+#include <err.h>
+#include <grp.h>
+#include <pwd.h>
+#include <ugidfw.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/*
+ * Starting point for a regression test for mac_bsdextended(4) and the
+ * supporting libugidfw(3).
+ */
+void
+usage(void)
+{
+
+ fprintf(stderr, "test_ugidfw\n");
+ exit(-1);
+}
+
+/*
+ * This section of the regression test passes some test cases through the
+ * rule<->string routines to confirm they work approximately as desired.
+ */
+
+/*
+ * List of users and groups we must check exists before we can begin, since
+ * they are used in the string test rules. We use users and groups that will
+ * always exist in a default install used for regression testing.
+ */
+static const char *test_users[] = {
+ "root",
+ "daemon",
+ "operator",
+ "bin",
+};
+static const int test_users_len = sizeof(test_users) / sizeof(char *);
+
+static const char *test_groups[] = {
+ "wheel",
+ "daemon",
+ "operator",
+ "bin",
+};
+static const int test_groups_len = sizeof(test_groups) / sizeof(char *);
+
+/*
+ * List of test strings that must go in (and come out) of libugidfw intact.
+ */
+static const char *test_strings[] = {
+ /* Variations on subject and object uids. */
+ "subject uid root object uid root mode n",
+ "subject uid root object uid daemon mode n",
+ "subject uid daemon object uid root mode n",
+ "subject uid daemon object uid daemon mode n",
+ /* Variations on mode. */
+ "subject uid root object uid root mode a",
+ "subject uid root object uid root mode r",
+ "subject uid root object uid root mode s",
+ "subject uid root object uid root mode w",
+ "subject uid root object uid root mode x",
+ "subject uid root object uid root mode arswx",
+ /* Variations on subject and object gids. */
+ "subject gid wheel object gid wheel mode n",
+ "subject gid wheel object gid daemon mode n",
+ "subject gid daemon object gid wheel mode n",
+ "subject gid daemon object gid daemon mode n",
+ /* Subject uids and subject gids. */
+ "subject uid bin gid daemon object uid operator gid wheel mode n",
+ /* Not */
+ "subject not uid operator object uid bin mode n",
+ "subject uid bin object not uid operator mode n",
+ "subject not uid daemon object not uid operator mode n",
+ /* Ranges */
+ "subject uid root:operator object gid wheel:bin mode n",
+ /* Jail ID */
+ "subject jailid 1 object uid root mode n",
+ /* Filesys */
+ "subject uid root object filesys / mode n",
+ "subject uid root object filesys /dev mode n",
+ /* S/UGID */
+ "subject not uid root object sgid mode n",
+ "subject not uid root object sgid mode n",
+ /* Matching uid/gid */
+ "subject not uid root:operator object not uid_of_subject mode n",
+ "subject not gid wheel:bin object not gid_of_subject mode n",
+ /* Object types */
+ "subject uid root object type a mode a",
+ "subject uid root object type r mode a",
+ "subject uid root object type d mode a",
+ "subject uid root object type b mode a",
+ "subject uid root object type c mode a",
+ "subject uid root object type l mode a",
+ "subject uid root object type s mode a",
+ "subject uid root object type rbc mode a",
+ "subject uid root object type dls mode a",
+ /* Empty rules always match */
+ "subject object mode a",
+ /* Partial negations */
+ "subject ! uid root object mode n",
+ "subject ! gid wheel object mode n",
+ "subject ! jailid 2 object mode n",
+ "subject object ! uid root mode n",
+ "subject object ! gid wheel mode n",
+ "subject object ! filesys / mode n",
+ "subject object ! suid mode n",
+ "subject object ! sgid mode n",
+ "subject object ! uid_of_subject mode n",
+ "subject object ! gid_of_subject mode n",
+ "subject object ! type d mode n",
+ /* All out nonsense */
+ "subject uid root ! gid wheel:bin ! jailid 1 "
+ "object ! uid root:daemon gid daemon filesys / suid sgid uid_of_subject gid_of_subject ! type r "
+ "mode rsx",
+};
+static const int test_strings_len = sizeof(test_strings) / sizeof(char *);
+
+static void
+test_libugidfw_strings(void)
+{
+ struct mac_bsdextended_rule rule;
+ char errorstr[256];
+ char rulestr[256];
+ int i, error;
+
+ for (i = 0; i < test_users_len; i++) {
+ if (getpwnam(test_users[i]) == NULL)
+ err(-1, "test_libugidfw_strings: getpwnam: %s",
+ test_users[i]);
+ }
+
+ for (i = 0; i < test_groups_len; i++) {
+ if (getgrnam(test_groups[i]) == NULL)
+ err(-1, "test_libugidfw_strings: getgrnam: %s",
+ test_groups[i]);
+ }
+
+ for (i = 0; i < test_strings_len; i++) {
+ error = bsde_parse_rule_string(test_strings[i], &rule,
+ sizeof(errorstr), errorstr);
+ if (error == -1)
+ errx(-1, "bsde_parse_rule_string: '%s' (%d): %s",
+ test_strings[i], i, errorstr);
+ error = bsde_rule_to_string(&rule, rulestr, sizeof(rulestr));
+ if (error < 0)
+ errx(-1, "bsde_rule_to_string: rule for '%s' "
+ "returned %d", test_strings[i], error);
+
+ if (strcmp(test_strings[i], rulestr) != 0)
+ errx(-1, "test_libugidfw: '%s' in, '%s' out",
+ test_strings[i], rulestr);
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ char errorstr[256];
+ int count, slots;
+
+ if (argc != 1)
+ usage();
+
+ /* Print an error if a non-root user attemps to run the tests. */
+ if (getuid() != 0) {
+ fprintf(stderr, "Error! Only root may run this utility\n");
+ return (EXIT_FAILURE);
+ }
+
+ /*
+ * We can test some parts of the library without the MAC Framework
+ * and policy loaded, so run those tests before calling
+ * mac_is_present().
+ */
+ test_libugidfw_strings();
+
+ switch (mac_is_present("bsdextended")) {
+ case -1:
+ err(-1, "mac_is_present");
+ case 1:
+ break;
+ case 0:
+ default:
+ errx(-1, "mac_bsdextended not loaded");
+ }
+
+ /*
+ * Some simple up-front checks to see if we're able to query the
+ * policy for basic state. We want the rule count to be 0 before
+ * starting, but "slots" is a property of prior runs and so we ignore
+ * the return value.
+ */
+ count = bsde_get_rule_count(sizeof(errorstr), errorstr);
+ if (count == -1)
+ errx(-1, "bsde_get_rule_count: %s", errorstr);
+ if (count != 0)
+ errx(-1, "bsde_get_rule_count: %d rules", count);
+
+ slots = bsde_get_rule_slots(sizeof(errorstr), errorstr);
+ if (slots == -1)
+ errx(-1, "bsde_get_rule_slots: %s", errorstr);
+
+ return (0);
+}
diff --git a/tools/regression/mlock/Makefile b/tools/regression/mlock/Makefile
new file mode 100644
index 0000000..a461788
--- /dev/null
+++ b/tools/regression/mlock/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+PROG= mlock
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/mlock/mlock.c b/tools/regression/mlock/mlock.c
new file mode 100644
index 0000000..d371b2b
--- /dev/null
+++ b/tools/regression/mlock/mlock.c
@@ -0,0 +1,91 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/mman.h>
+
+#include <err.h>
+#include <errno.h>
+#include <pwd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define NOBODY "nobody"
+
+/*
+ * Simple exercise for the mlock() system call -- confirm that mlock() and
+ * munlock() return success on an anonymously mapped memory page when running
+ * with privilege; confirm that they fail with EPERM when running
+ * unprivileged.
+ */
+int
+main(int argc, char *argv[])
+{
+ struct passwd *pwd;
+ int pagesize;
+ char *page;
+
+ if (geteuid() != 0)
+ errx(-1, "mlock must run as root");
+
+ errno = 0;
+ pwd = getpwnam(NOBODY);
+ if (pwd == NULL && errno == 0)
+ errx(-1, "getpwnam: user \"%s\" not found", NOBODY);
+ if (pwd == NULL)
+ errx(-1, "getpwnam: %s", strerror(errno));
+ if (pwd->pw_uid == 0)
+ errx(-1, "getpwnam: user \"%s\" has uid 0", NOBODY);
+
+ pagesize = getpagesize();
+ page = mmap(NULL, pagesize, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0);
+ if (page == MAP_FAILED)
+ errx(-1, "mmap: %s", strerror(errno));
+
+ if (mlock(page, pagesize) < 0)
+ errx(-1, "mlock privileged: %s", strerror(errno));
+
+ if (munlock(page, pagesize) < 0)
+ errx(-1, "munlock privileged: %s", strerror(errno));
+
+ if (seteuid(pwd->pw_uid) < 0)
+ errx(-1, "seteuid: %s", strerror(errno));
+
+ if (mlock(page, pagesize) == 0)
+ errx(-1, "mlock unprivileged: succeeded but shouldn't have");
+ if (errno != EPERM)
+ errx(-1, "mlock unprivileged: %s", strerror(errno));
+
+ if (munlock(page, pagesize) == 0)
+ errx(-1, "munlock unprivileged: succeeded but shouldn't have");
+ if (errno != EPERM)
+ errx(-1, "munlock unprivileged: %s", strerror(errno));
+
+ return (0);
+}
diff --git a/tools/regression/mqueue/Makefile b/tools/regression/mqueue/Makefile
new file mode 100644
index 0000000..a4f386b
--- /dev/null
+++ b/tools/regression/mqueue/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR=mqtest1 mqtest2 mqtest3 mqtest4 mqtest5
+
+.include <bsd.subdir.mk>
diff --git a/tools/regression/mqueue/mqtest1/Makefile b/tools/regression/mqueue/mqtest1/Makefile
new file mode 100644
index 0000000..4e04d1d
--- /dev/null
+++ b/tools/regression/mqueue/mqtest1/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG=mqtest1
+LDADD+=-lrt
+NO_MAN=
+DEBUG_FLAGS=-g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/mqueue/mqtest1/mqtest1.c b/tools/regression/mqueue/mqtest1/mqtest1.c
new file mode 100644
index 0000000..8551b9f
--- /dev/null
+++ b/tools/regression/mqueue/mqtest1/mqtest1.c
@@ -0,0 +1,51 @@
+/* $FreeBSD$ */
+
+#include <stdio.h>
+#include <mqueue.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <errno.h>
+
+#define MQNAME "/mytstqueue1"
+
+int main()
+{
+ struct mq_attr attr, attr2;
+ struct sigevent sigev;
+ mqd_t mq;
+ int status;
+
+ attr.mq_maxmsg = 2;
+ attr.mq_msgsize = 100;
+ mq = mq_open(MQNAME, O_CREAT | O_RDWR | O_EXCL, 0666, &attr);
+ if (mq == (mqd_t)-1)
+ err(1, "mq_open");
+ status = mq_unlink(MQNAME);
+ if (status)
+ err(1, "mq_unlink");
+ status = mq_getattr(mq, &attr2);
+ if (status)
+ err(1, "mq_getattr");
+ if (attr.mq_maxmsg != attr2.mq_maxmsg)
+ err(1, "mq_maxmsg changed");
+ if (attr.mq_msgsize != attr2.mq_msgsize)
+ err(1, "mq_msgsize changed");
+
+ sigev.sigev_notify = SIGEV_SIGNAL;
+ sigev.sigev_signo = SIGRTMIN;
+ status = mq_notify(mq, &sigev);
+ if (status)
+ err(1, "mq_notify");
+ status = mq_notify(mq, &sigev);
+ if (status == 0)
+ err(1, "mq_notify 2");
+ else if (errno != EBUSY)
+ err(1, "mq_notify 3");
+ status = mq_notify(mq, NULL);
+ if (status)
+ err(1, "mq_notify 4");
+ status = mq_close(mq);
+ if (status)
+ err(1, "mq_close");
+ return (0);
+}
diff --git a/tools/regression/mqueue/mqtest2/Makefile b/tools/regression/mqueue/mqtest2/Makefile
new file mode 100644
index 0000000..9d1b92c
--- /dev/null
+++ b/tools/regression/mqueue/mqtest2/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG=mqtest2
+LDADD+=-lrt
+NO_MAN=
+DEBUG_FLAGS=-g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/mqueue/mqtest2/mqtest2.c b/tools/regression/mqueue/mqtest2/mqtest2.c
new file mode 100644
index 0000000..f37af20
--- /dev/null
+++ b/tools/regression/mqueue/mqtest2/mqtest2.c
@@ -0,0 +1,88 @@
+/* $FreeBSD$ */
+#include <stdio.h>
+#include <mqueue.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <unistd.h>
+
+#define MQNAME "/mytstqueue2"
+#define LOOPS 1000
+#define PRIO 10
+
+void alarmhandler(int sig)
+{
+ write(1, "timeout\n", 8);
+ _exit(1);
+}
+
+int main()
+{
+ struct mq_attr attr;
+ mqd_t mq;
+ int status, pid;
+
+ mq_unlink(MQNAME);
+
+ attr.mq_maxmsg = 5;
+ attr.mq_msgsize = 128;
+ mq = mq_open(MQNAME, O_CREAT | O_RDWR | O_EXCL, 0666, &attr);
+ if (mq == (mqd_t)-1)
+ err(1, "mq_open");
+ status = mq_getattr(mq, &attr);
+ if (status)
+ err(1, "mq_getattr");
+ pid = fork();
+ if (pid == 0) { /* child */
+ int prio, j, i;
+ char *buf;
+
+ mq_close(mq);
+
+ signal(SIGALRM, alarmhandler);
+
+ mq = mq_open(MQNAME, O_RDWR);
+ if (mq == (mqd_t)-1)
+ err(1, "child: mq_open");
+ buf = malloc(attr.mq_msgsize);
+ for (j = 0; j < LOOPS; ++j) {
+ alarm(3);
+ status = mq_receive(mq, buf, attr.mq_msgsize, &prio);
+ if (status == -1)
+ err(2, "child: mq_receive");
+ for (i = 0; i < attr.mq_msgsize; ++i)
+ if (buf[i] != i)
+ err(3, "child: message data corrupted");
+ if (prio != PRIO)
+ err(4, "child: priority is incorrect: %d",
+ prio);
+ }
+ alarm(0);
+ free(buf);
+ mq_close(mq);
+ return (0);
+ } else if (pid == -1) {
+ err(1, "fork()");
+ } else {
+ char *buf;
+ int i, j, prio;
+
+ signal(SIGALRM, alarmhandler);
+ buf = malloc(attr.mq_msgsize);
+ for (j = 0; j < LOOPS; ++j) {
+ for (i = 0; i < attr.mq_msgsize; ++i)
+ buf[i] = i;
+ alarm(3);
+ status = mq_send(mq, buf, attr.mq_msgsize, PRIO);
+ if (status)
+ err(1, "mq_send");
+ }
+ alarm(3);
+ wait(&status);
+ alarm(0);
+ }
+ status = mq_close(mq);
+ if (status)
+ err(1, "mq_close");
+ mq_unlink(MQNAME);
+ return (0);
+}
diff --git a/tools/regression/mqueue/mqtest3/Makefile b/tools/regression/mqueue/mqtest3/Makefile
new file mode 100644
index 0000000..d4ea9fa
--- /dev/null
+++ b/tools/regression/mqueue/mqtest3/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG=mqtest3
+LDADD+=-lrt
+NO_MAN=
+DEBUG_FLAGS=-g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/mqueue/mqtest3/mqtest3.c b/tools/regression/mqueue/mqtest3/mqtest3.c
new file mode 100644
index 0000000..e2d8a9e
--- /dev/null
+++ b/tools/regression/mqueue/mqtest3/mqtest3.c
@@ -0,0 +1,104 @@
+/* $FreeBSD$ */
+#include <stdio.h>
+#include <mqueue.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sys/select.h>
+
+#define MQNAME "/mytstqueue3"
+#define LOOPS 1000
+#define PRIO 10
+
+void sighandler(int sig)
+{
+ write(1, "timeout\n", 8);
+ _exit(1);
+}
+
+int main()
+{
+ mqd_t mq;
+ int status;
+ struct mq_attr attr;
+ int pid;
+ fd_set set;
+
+ mq_unlink(MQNAME);
+
+ attr.mq_maxmsg = 5;
+ attr.mq_msgsize = 128;
+ mq = mq_open(MQNAME, O_CREAT | O_RDWR | O_EXCL, 0666, &attr);
+ if (mq == (mqd_t)-1)
+ err(1, "mq_open()");
+ status = mq_getattr(mq, &attr);
+ if (status)
+ err(1, "mq_getattr()");
+
+ pid = fork();
+ if (pid == 0) { /* child */
+ int prio, j, i;
+ char *buf;
+
+ mq_close(mq);
+
+ signal(SIGALRM, sighandler);
+
+ mq = mq_open(MQNAME, O_RDWR);
+ if (mq == (mqd_t)-1)
+ err(1, "child process: mq_open");
+ buf = malloc(attr.mq_msgsize);
+ for (j = 0; j < LOOPS; ++j) {
+ FD_ZERO(&set);
+ FD_SET(__mq_oshandle(mq), &set);
+ alarm(3);
+ status = select(__mq_oshandle(mq)+1, &set, NULL, NULL, NULL);
+ if (status != 1)
+ err(1, "child process: select()");
+ status = mq_receive(mq, buf, attr.mq_msgsize, &prio);
+ if (status == -1)
+ err(2, "child process: mq_receive");
+ for (i = 0; i < attr.mq_msgsize; ++i)
+ if (buf[i] != i)
+ err(3, "message data corrupted");
+ if (prio != PRIO)
+ err(4, "priority is incorrect: %d", prio);
+ }
+ alarm(0);
+ free(buf);
+ mq_close(mq);
+ return (0);
+ } else if (pid == -1) {
+ err(1, "fork()");
+ } else {
+ char *buf;
+ int i, j, prio;
+
+ signal(SIGALRM, sighandler);
+ buf = malloc(attr.mq_msgsize);
+ for (j = 0; j < LOOPS; ++j) {
+ for (i = 0; i < attr.mq_msgsize; ++i) {
+ buf[i] = i;
+ }
+ alarm(3);
+ FD_ZERO(&set);
+ FD_SET(__mq_oshandle(mq), &set);
+ status = select(__mq_oshandle(mq)+1, NULL, &set, NULL, NULL);
+ if (status != 1)
+ err(1, "select()");
+ status = mq_send(mq, buf, attr.mq_msgsize, PRIO);
+ if (status) {
+ kill(pid, SIGKILL);
+ err(2, "mq_send()");
+ }
+ }
+ alarm(3);
+ wait(&status);
+ alarm(0);
+ }
+ status = mq_close(mq);
+ if (status)
+ err(1, "mq_close");
+ mq_unlink(MQNAME);
+ return (0);
+}
diff --git a/tools/regression/mqueue/mqtest4/Makefile b/tools/regression/mqueue/mqtest4/Makefile
new file mode 100644
index 0000000..3dfec4d
--- /dev/null
+++ b/tools/regression/mqueue/mqtest4/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG=mqtest4
+LDADD+=-lrt
+NO_MAN=
+DEBUG_FLAGS=-g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/mqueue/mqtest4/mqtest4.c b/tools/regression/mqueue/mqtest4/mqtest4.c
new file mode 100644
index 0000000..a49c210
--- /dev/null
+++ b/tools/regression/mqueue/mqtest4/mqtest4.c
@@ -0,0 +1,110 @@
+/* $FreeBSD$ */
+#include <stdio.h>
+#include <mqueue.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sys/select.h>
+#include <sys/event.h>
+
+#define MQNAME "/mytstqueue4"
+#define LOOPS 1000
+#define PRIO 10
+
+void sighandler(int sig)
+{
+ write(1, "timeout\n", 8);
+ _exit(1);
+}
+
+int main()
+{
+ mqd_t mq;
+ int status;
+ struct mq_attr attr;
+ int pid;
+ fd_set set;
+ int kq;
+ struct kevent kev;
+
+ mq_unlink(MQNAME);
+
+ attr.mq_maxmsg = 5;
+ attr.mq_msgsize = 128;
+ mq = mq_open(MQNAME, O_CREAT | O_RDWR | O_EXCL, 0666, &attr);
+ if (mq == (mqd_t) -1)
+ err(1, "mq_open()");
+ status = mq_getattr(mq, &attr);
+ if (status)
+ err(1, "mq_getattr()");
+ pid = fork();
+ if (pid == 0) { /* child */
+ int prio, j, i;
+ char *buf;
+
+ mq_close(mq);
+ kq = kqueue();
+ mq = mq_open(MQNAME, O_RDWR);
+ if (mq == (mqd_t)-1)
+ err(1, "child: mq_open");
+ EV_SET(&kev, __mq_oshandle(mq), EVFILT_READ, EV_ADD, 0, 0, 0);
+ status = kevent(kq, &kev, 1, NULL, 0, NULL);
+ if (status == -1)
+ err(1, "child: kevent");
+ buf = malloc(attr.mq_msgsize);
+ for (j = 0; j < LOOPS; ++j) {
+ alarm(3);
+ status = kevent(kq, NULL, 0, &kev, 1, NULL);
+ if (status != 1)
+ err(1, "child: kevent 2");
+ status = mq_receive(mq, buf, attr.mq_msgsize, &prio);
+ if (status == -1)
+ err(2, "child: mq_receive");
+ for (i = 0; i < attr.mq_msgsize; ++i)
+ if (buf[i] != i)
+ err(3, "child: message data corrupted");
+ if (prio != PRIO)
+ err(4, "child: priority is incorrect: %d",
+ prio);
+ }
+ alarm(0);
+ free(buf);
+ mq_close(mq);
+ return (0);
+ } else if (pid == -1) {
+ err(1, "fork()");
+ } else {
+ char *buf;
+ int i, j, prio;
+
+ signal(SIGALRM, sighandler);
+ kq = kqueue();
+ EV_SET(&kev, __mq_oshandle(mq), EVFILT_WRITE, EV_ADD, 0, 0, 0);
+ status = kevent(kq, &kev, 1, NULL, 0, NULL);
+ if (status == -1)
+ err(1, "kevent");
+ buf = malloc(attr.mq_msgsize);
+ for (j = 0; j < LOOPS; ++j) {
+ for (i = 0; i < attr.mq_msgsize; ++i) {
+ buf[i] = i;
+ }
+ alarm(3);
+ status = kevent(kq, NULL, 0, &kev, 1, NULL);
+ if (status != 1)
+ err(1, "child: kevent 2");
+ status = mq_send(mq, buf, attr.mq_msgsize, PRIO);
+ if (status) {
+ err(2, "mq_send()");
+ }
+ }
+ free(buf);
+ alarm(3);
+ wait(&status);
+ alarm(0);
+ }
+ status = mq_close(mq);
+ if (status)
+ err(1, "mq_close");
+ mq_unlink(MQNAME);
+ return (0);
+}
diff --git a/tools/regression/mqueue/mqtest5/Makefile b/tools/regression/mqueue/mqtest5/Makefile
new file mode 100644
index 0000000..25f46ad
--- /dev/null
+++ b/tools/regression/mqueue/mqtest5/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG=mqtest5
+LDADD+=-lrt
+NO_MAN=
+DEBUG_FLAGS=-g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/mqueue/mqtest5/mqtest5.c b/tools/regression/mqueue/mqtest5/mqtest5.c
new file mode 100644
index 0000000..adf54dc
--- /dev/null
+++ b/tools/regression/mqueue/mqtest5/mqtest5.c
@@ -0,0 +1,118 @@
+/* $FreeBSD$ */
+#include <stdio.h>
+#include <mqueue.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sys/select.h>
+#include <sys/event.h>
+#include <signal.h>
+
+#define MQNAME "/mytstqueue5"
+#define LOOPS 1000
+#define PRIO 10
+
+void sighandler(int sig)
+{
+ write(1, "timeout\n", 8);
+ _exit(1);
+}
+
+int main()
+{
+ mqd_t mq;
+ int status;
+ struct mq_attr attr;
+ int pid;
+ sigset_t set;
+ struct sigaction sa;
+ siginfo_t info;
+
+ mq_unlink(MQNAME);
+
+ sigemptyset(&set);
+ sigaddset(&set, SIGRTMIN);
+ sigprocmask(SIG_BLOCK, &set, NULL);
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = SA_SIGINFO;
+ sa.sa_sigaction = (void *) SIG_DFL;
+ sigaction(SIGRTMIN, &sa, NULL);
+
+ attr.mq_maxmsg = 5;
+ attr.mq_msgsize = 128;
+ mq = mq_open(MQNAME, O_CREAT | O_RDWR | O_EXCL, 0666, &attr);
+ if (mq == (mqd_t)-1)
+ err(1, "mq_open()");
+ status = mq_getattr(mq, &attr);
+ if (status)
+ err(1, "mq_getattr()");
+ pid = fork();
+ if (pid == 0) { /* child */
+ int prio, j, i;
+ char *buf;
+ struct sigevent sigev;
+
+ signal(SIGALRM, sighandler);
+
+ sigev.sigev_notify = SIGEV_SIGNAL;
+ sigev.sigev_signo = SIGRTMIN;
+ sigev.sigev_value.sival_int = 2;
+
+ mq_close(mq);
+ mq = mq_open(MQNAME, O_RDWR | O_NONBLOCK);
+ if (mq == (mqd_t)-1)
+ err(1, "child: mq_open");
+ buf = malloc(attr.mq_msgsize);
+ for (j = 0; j < LOOPS; ++j) {
+ alarm(3);
+ status = mq_notify(mq, &sigev);
+ if (status)
+ err(1, "child: mq_notify");
+ status = sigwaitinfo(&set, &info);
+ if (status == -1)
+ err(1, "child: sigwaitinfo");
+ if (info.si_value.sival_int != 2)
+ err(1, "child: sival_int");
+ status = mq_receive(mq, buf, attr.mq_msgsize, &prio);
+ if (status == -1)
+ err(2, "child: mq_receive");
+ for (i = 0; i < attr.mq_msgsize; ++i)
+ if (buf[i] != i)
+ err(3, "child: message data corrupted");
+ if (prio != PRIO)
+ err(4, "child: priority is incorrect: %d",
+ prio);
+ }
+ alarm(0);
+ free(buf);
+ mq_close(mq);
+ return (0);
+ } else if (pid == -1) {
+ err(1, "fork()");
+ } else {
+ char *buf;
+ int i, j, prio;
+
+ signal(SIGALRM, sighandler);
+ buf = malloc(attr.mq_msgsize);
+ for (j = 0; j < LOOPS; ++j) {
+ for (i = 0; i < attr.mq_msgsize; ++i) {
+ buf[i] = i;
+ }
+ alarm(3);
+ status = mq_send(mq, buf, attr.mq_msgsize, PRIO);
+ if (status) {
+ kill(pid, SIGKILL);
+ err(2, "mq_send()");
+ }
+ }
+ alarm(3);
+ wait(&status);
+ alarm(0);
+ }
+ status = mq_close(mq);
+ if (status)
+ err(1, "mq_close");
+ mq_unlink(MQNAME);
+ return (0);
+}
diff --git a/tools/regression/msdosfs/msdosfstest-2.sh b/tools/regression/msdosfs/msdosfstest-2.sh
new file mode 100644
index 0000000..2262af8
--- /dev/null
+++ b/tools/regression/msdosfs/msdosfstest-2.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+# A really simple script to create a swap-backed msdosfs filesystem, then test to
+# make sure the case conversion issue described in msdosfs_lookup.c rev 1.46
+# is fixed.
+
+mkdir /tmp/msdosfstest/
+mdconfig -a -t swap -s 128m -u 10
+bsdlabel -w md10 auto
+newfs_msdos -F 16 -b 8192 /dev/md10a
+mount_msdosfs /dev/md10a /tmp/msdosfstest/
+cat /tmp/msdosfstest/foo
+touch /tmp/msdosfstest/FOO
+cat /tmp/msdosfstest/foo
+if [ $? -eq 0 ]; then
+ echo "ok 2";
+else
+ echo "not ok 2";
+fi
+umount /tmp/msdosfstest/
+mdconfig -d -u 10
+rmdir /tmp/msdosfstest/
diff --git a/tools/regression/msdosfs/msdosfstest-3.sh b/tools/regression/msdosfs/msdosfstest-3.sh
new file mode 100644
index 0000000..4d3a8fe
--- /dev/null
+++ b/tools/regression/msdosfs/msdosfstest-3.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+# A really simple script to create a swap-backed msdosfs filesystem, then
+# test to make sure the mbnambuf optimisation(msdosfs_conv.c rev 1.40)
+# doesn't break multi-byte characters.
+
+mkdir /tmp/msdosfstest/
+mdconfig -a -t swap -s 128m -u 10
+bsdlabel -w md10 auto
+newfs_msdos -F 16 -b 8192 /dev/md10a
+mount_msdosfs -L zh_TW.Big5 -D CP950 /dev/md10a /tmp/msdosfstest/
+mkdir /tmp/msdosfstest/012345678_¨¸´c¤§¬ü
+cd /tmp/msdosfstest/012345678_¨¸´c¤§¬ü
+if [ $? -eq 0 ]; then
+ echo "ok 3";
+else
+ echo "not ok 3";
+fi
+cd /tmp
+umount /tmp/msdosfstest/
+mdconfig -d -u 10
+rmdir /tmp/msdosfstest/
diff --git a/tools/regression/msdosfs/msdosfstest-4.sh b/tools/regression/msdosfs/msdosfstest-4.sh
new file mode 100644
index 0000000..46b9db9
--- /dev/null
+++ b/tools/regression/msdosfs/msdosfstest-4.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+# A really simple script to create a swap-backed msdosfs filesystem, then
+# test to see if msdosfs_conv.c rev 1.45[1] works properly.
+
+mkdir /tmp/msdosfstest
+mdconfig -a -t swap -s 128m -u 10
+bsdlabel -w md10 auto
+newfs_msdos -F 16 -b 8192 /dev/md10a
+mount_msdosfs -L uk_UA.KOI8-U -D CP866 -l /dev/md10a /tmp/msdosfstest
+# mkdir /tmp/msdosfstest/U+0456 (CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I)
+mkdir /tmp/msdosfstest/¦
+if [ $? -eq 0 ]; then
+ echo "ok 4 (pass stage 1/3)"
+ # cd /tmp/msdosfstest/U+0456 (CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I)
+ cd /tmp/msdosfstest/¦
+ if [ $? -eq 0 ]; then
+ echo "ok 4 (pass stage 2/3)"
+ cd /tmp
+ umount /tmp/msdosfstest
+ mount_msdosfs -L uk_UA.KOI8-U -D CP866 -s /dev/md10a /tmp/msdosfstest
+ cd /tmp/msdosfstest/_~1
+ if [ $? -eq 0 ]; then
+ echo "ok 4 (pass stage 3/3)"
+ else
+ echo "not ok 4"
+ fi
+ else
+ echo "not ok 4"
+ fi
+else
+ echo "not ok 4"
+fi
+cd /tmp
+umount /tmp/msdosfstest
+mdconfig -d -u 10
+rmdir /tmp/msdosfstest
diff --git a/tools/regression/msdosfs/msdosfstest-5.sh b/tools/regression/msdosfs/msdosfstest-5.sh
new file mode 100644
index 0000000..f6a5581
--- /dev/null
+++ b/tools/regression/msdosfs/msdosfstest-5.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+# $FreeBSD$
+# A really simple script to create a swap-backed msdosfs filesystem, then
+# test to see if msdosfs_conv.c rev 1.45[2] works properly.
+# Note that this is a requisite condition but far away from sufficient condition.
+# You must check file system by "dir /x" on MS Windows.
+
+mkdir /tmp/msdosfstest
+mdconfig -a -t swap -s 128m -u 10
+bsdlabel -w md10 auto
+newfs_msdos -F 16 -b 8192 /dev/md10a
+mount_msdosfs -L ja_JP.eucJP -D CP932 -l /dev/md10a /tmp/msdosfstest
+# touch /tmp/msdosfstest/U+FF71 (HALFWIDTH KATAKANA LETTER A)
+touch /tmp/msdosfstest/Ž±
+if [ $? -eq 0 ]; then
+ umount /tmp/msdosfstest
+ mount_msdosfs -L ja_JP.eucJP -D CP932 -s /dev/md10a /tmp/msdosfstest
+ ls /tmp/msdosfstest/Ž±
+ if [ $? -eq 0 ]; then
+ echo "ok 5 (pass stage 1/2)"
+ umount /tmp/msdosfstest
+ mount_msdosfs -L uk_UA.KOI8-U -D CP866 -l /dev/md10a /tmp/msdosfstest
+ # ls /tmp/msdosfstest/0xb1 (MEDIUM SHADE)
+ ls /tmp/msdosfstest/‘
+ if [ $? -ne 0 ]; then
+ # assume that U+FF71 was recorded with long name
+ echo "ok 5 (pass stage 2/2)"
+ else
+ # only 0xb1 was found (doesn't have long name)
+ echo "not ok 5"
+ fi
+ else
+ echo "not ok 5"
+ fi
+else
+ echo "not ok 5"
+fi
+umount /tmp/msdosfstest
+mdconfig -d -u 10
+rmdir /tmp/msdosfstest
diff --git a/tools/regression/msdosfs/msdosfstest-6.sh b/tools/regression/msdosfs/msdosfstest-6.sh
new file mode 100644
index 0000000..d64472d
--- /dev/null
+++ b/tools/regression/msdosfs/msdosfstest-6.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+# A really simple script to create a swap-backed msdosfs filesystem, then
+# test to make sure the nmount conversion(mount_msdosfs.c rev 1.37)
+# doesn't break multi-byte characters.
+
+mkdir /tmp/msdosfstest/
+mdconfig -a -t swap -s 128m -u 10
+bsdlabel -w md10 auto
+newfs_msdos -F 32 -b 8192 /dev/md10a
+mount_msdosfs -L zh_TW.Big5 -D CP950 /dev/md10a /tmp/msdosfstest/
+mkdir '/tmp/msdosfstest/¬O§_¬Ý¹L§{¶¡±`¨£ªº³\¯øªå²\®ü¼y¥\®b¦Y»\¶º²Ä¥|¶°'
+cd '/tmp/msdosfstest/¬O§_¬Ý¹L§{¶¡±`¨£ªº³\¯øªå²\®ü¼y¥\®b¦Y»\¶º²Ä¥|¶°'
+if [ $? -eq 0 ]; then
+ echo "ok 6";
+else
+ echo "not ok 6";
+fi
+cd /tmp
+umount /tmp/msdosfstest/
+mdconfig -d -u 10
+rm -rf /tmp/msdosfstest/
diff --git a/tools/regression/msdosfs/msdosfstest.sh b/tools/regression/msdosfs/msdosfstest.sh
new file mode 100644
index 0000000..ba2a434
--- /dev/null
+++ b/tools/regression/msdosfs/msdosfstest.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# $FreeBSD$
+# A really simple script to create a swap-backed msdosfs filesystem, copy a few
+# files to it, unmount/remount the filesystem, and make sure all is well.
+#
+# Not very advanced, but better than nothing.
+mkdir /tmp/msdosfstest/
+mdconfig -a -t swap -s 128m -u 10
+bsdlabel -w md10 auto
+newfs_msdos -F 16 -b 8192 /dev/md10a
+mount_msdosfs /dev/md10a /tmp/msdosfstest/
+cp -R /usr/src/bin/ /tmp/msdosfstest/
+umount /tmp/msdosfstest/
+mount_msdosfs /dev/md10a /tmp/msdosfstest/
+diff -u -r /usr/src/bin /tmp/msdosfstest/
+if [ $? -eq 0 ]; then
+ echo "ok 1";
+else
+ echo "not ok 1";
+fi
+umount /tmp/msdosfstest/
+mdconfig -d -u 10
+rmdir /tmp/msdosfstest/
diff --git a/tools/regression/net80211/ccmp/Makefile b/tools/regression/net80211/ccmp/Makefile
new file mode 100644
index 0000000..0d918b1
--- /dev/null
+++ b/tools/regression/net80211/ccmp/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../sys/net80211
+
+KMOD= test_ccmp
+SRCS+= test_ccmp.c
+
+.include <bsd.kmod.mk>
diff --git a/tools/regression/net80211/ccmp/test_ccmp.c b/tools/regression/net80211/ccmp/test_ccmp.c
new file mode 100644
index 0000000..d78be95
--- /dev/null
+++ b/tools/regression/net80211/ccmp/test_ccmp.c
@@ -0,0 +1,749 @@
+/*-
+ * Copyright (c) 2004 Sam Leffler, Errno Consulting
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * CCMP test module.
+ *
+ * Test vectors come from section I.7.4 of P802.11i/D7.0, October 2003.
+ *
+ * To use this tester load the net80211 layer (either as a module or
+ * by statically configuring it into your kernel), then kldload this
+ * module. It should automatically run all test cases and print
+ * information for each. To run one or more tests you can specify a
+ * tests parameter to the module that is a bit mask of the set of tests
+ * you want; e.g. insmod ccmp_test tests=7 will run only test mpdu's
+ * 1, 2, and 3.
+ */
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/systm.h>
+#include <sys/mbuf.h>
+#include <sys/module.h>
+
+#include <sys/socket.h>
+
+#include <net/if.h>
+#include <net/if_media.h>
+
+#include <net80211/ieee80211_var.h>
+
+/*
+==== CCMP test mpdu 1 ====
+
+-- MPDU Fields
+
+7 Version = 0
+8 Type = 2 SubType = 0 Data
+9 ToDS = 0 FromDS = 0
+10 MoreFrag = 0 Retry = 1
+11 PwrMgt = 0 moreData = 0
+12 Encrypt = 1
+13 Order = 0
+14 Duration = 11459
+15 A1 = 0f-d2-e1-28-a5-7c DA
+16 A2 = 50-30-f1-84-44-08 SA
+17 A3 = ab-ae-a5-b8-fc-ba BSSID
+18 SC = 0x3380
+19 seqNum = 824 (0x0338) fraqNum = 0 (0x00)
+20 Algorithm = AES_CCM
+21 Key ID = 0
+22 TK = c9 7c 1f 67 ce 37 11 85 51 4a 8a 19 f2 bd d5 2f
+23 PN = 199027030681356 (0xB5039776E70C)
+24 802.11 Header = 08 48 c3 2c 0f d2 e1 28 a5 7c 50 30 f1 84 44 08
+25 ab ae a5 b8 fc ba 80 33
+26 Muted 802.11 Header = 08 40 0f d2 e1 28 a5 7c 50 30 f1 84 44 08
+27 ab ae a5 b8 fc ba 00 00
+28 CCMP Header = 0c e7 00 20 76 97 03 b5
+29 CCM Nonce = 00 50 30 f1 84 44 08 b5 03 97 76 e7 0c
+30 Plaintext Data = f8 ba 1a 55 d0 2f 85 ae 96 7b b6 2f b6 cd a8 eb
+1 7e 78 a0 50
+2 CCM MIC = 78 45 ce 0b 16 f9 76 23
+3 -- Encrypted MPDU with FCS
+4 08 48 c3 2c 0f d2 e1 28 a5 7c 50 30 f1 84 44 08 ab ae a5 b8 fc ba
+5 80 33 0c e7 00 20 76 97 03 b5 f3 d0 a2 fe 9a 3d bf 23 42 a6 43 e4
+6 32 46 e8 0c 3c 04 d0 19 78 45 ce 0b 16 f9 76 23 1d 99 f0 66
+*/
+static const u_int8_t test1_key[] = { /* TK */
+ 0xc9, 0x7c, 0x1f, 0x67, 0xce, 0x37, 0x11, 0x85, 0x51, 0x4a, 0x8a,
+ 0x19, 0xf2, 0xbd, 0xd5, 0x2f
+};
+static const u_int8_t test1_plaintext[] = { /* Plaintext MPDU w/o MIC */
+ 0x08, 0x48, 0xc3, 0x2c, 0x0f, 0xd2, 0xe1, 0x28, /* 802.11 Header */
+ 0xa5, 0x7c, 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08,
+ 0xab, 0xae, 0xa5, 0xb8, 0xfc, 0xba, 0x80, 0x33,
+ 0xf8, 0xba, 0x1a, 0x55, 0xd0, 0x2f, 0x85, 0xae, /* Plaintext Data */
+ 0x96, 0x7b, 0xb6, 0x2f, 0xb6, 0xcd, 0xa8, 0xeb,
+ 0x7e, 0x78, 0xa0, 0x50,
+};
+static const u_int8_t test1_encrypted[] = { /* Encrypted MPDU with MIC */
+ 0x08, 0x48, 0xc3, 0x2c, 0x0f, 0xd2, 0xe1, 0x28,
+ 0xa5, 0x7c, 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08,
+ 0xab, 0xae, 0xa5, 0xb8, 0xfc, 0xba, 0x80, 0x33,
+ 0x0c, 0xe7, 0x00, 0x20, 0x76, 0x97, 0x03, 0xb5,
+ 0xf3, 0xd0, 0xa2, 0xfe, 0x9a, 0x3d, 0xbf, 0x23,
+ 0x42, 0xa6, 0x43, 0xe4, 0x32, 0x46, 0xe8, 0x0c,
+ 0x3c, 0x04, 0xd0, 0x19, 0x78, 0x45, 0xce, 0x0b,
+ 0x16, 0xf9, 0x76, 0x23,
+};
+
+/*
+==== CCMP test mpdu 2 ====
+
+-- MPDU Fields
+
+ 9 Version = 0
+10 Type = 2 SubType = 3 Data+CF-Ack+CF-Poll
+11 ToDS = 0 FromDS = 0
+12 MoreFrag = 0 Retry = 0
+13 PwrMgt = 0 moreData = 0
+14 Encrypt = 1
+15 Order = 1
+16 Duration = 20842
+17 A1 = ea-10-0c-84-68-50 DA
+18 A2 = ee-c1-76-2c-88-de SA
+19 A3 = af-2e-e9-f4-6a-07 BSSID
+20 SC = 0xCCE0
+21 seqNum = 3278 (0x0CCE) fraqNum = 0 (0x00)
+22 Algorithm = AES_CCM
+23 Key ID = 2
+24 TK = 8f 7a 05 3f a5 77 a5 59 75 29 27 20 97 a6 03 d5
+25 PN = 54923164817386 (0x31F3CBBA97EA)
+26 802.11 Header = 38 c0 6a 51 ea 10 0c 84 68 50 ee c1 76 2c 88 de
+27 af 2e e9 f4 6a 07 e0 cc
+28 Muted 802.11 Header = 08 c0 ea 10 0c 84 68 50 ee c1 76 2c 88 de
+29 af 2e e9 f4 6a 07 00 00
+30 CCMP Header = ea 97 00 a0 ba cb f3 31
+31 CCM Nonce = 00 ee c1 76 2c 88 de 31 f3 cb ba 97 ea
+32 Plaintext Data = 83 a0 63 4b 5e d7 62 7e b9 df 22 5e 05 74 03 42
+33 de 19 41 17
+34 CCM MIC = 54 2f bf 8d a0 6a a4 ae
+35 -- Encrypted MPDU with FCS
+36 38 c0 6a 51 ea 10 0c 84 68 50 ee c1 76 2c 88 de af 2e e9 f4 6a 07
+37 e0 cc ea 97 00 a0 ba cb f3 31 81 4b 69 65 d0 5b f2 b2 ed 38 d4 be
+38 b0 69 fe 82 71 4a 61 0b 54 2f bf 8d a0 6a a4 ae 25 3c 47 38
+*/
+static const u_int8_t test2_key[] = { /* TK */
+ 0x8f, 0x7a, 0x05, 0x3f, 0xa5, 0x77, 0xa5, 0x59, 0x75, 0x29, 0x27,
+ 0x20, 0x97, 0xa6, 0x03, 0xd5
+};
+static const u_int8_t test2_plaintext[] = { /* Plaintext MPDU w/o MIC */
+ 0x38, 0xc0, 0x6a, 0x51, 0xea, 0x10, 0x0c, 0x84, 0x68, 0x50, 0xee,
+ 0xc1, 0x76, 0x2c, 0x88, 0xde, 0xaf, 0x2e, 0xe9, 0xf4, 0x6a, 0x07,
+ 0xe0, 0xcc,
+ 0x83, 0xa0, 0x63, 0x4b, 0x5e, 0xd7, 0x62, 0x7e, 0xb9, 0xdf, 0x22,
+ 0x5e, 0x05, 0x74, 0x03, 0x42, 0xde, 0x19, 0x41, 0x17
+};
+static const u_int8_t test2_encrypted[] = { /* Encrypted MPDU with MIC */
+ 0x38, 0xc0, 0x6a, 0x51, 0xea, 0x10, 0x0c, 0x84, 0x68, 0x50, 0xee,
+ 0xc1, 0x76, 0x2c, 0x88, 0xde, 0xaf, 0x2e, 0xe9, 0xf4, 0x6a, 0x07,
+ 0xe0, 0xcc, 0xea, 0x97, 0x00, 0xa0, 0xba, 0xcb, 0xf3, 0x31, 0x81,
+ 0x4b, 0x69, 0x65, 0xd0, 0x5b, 0xf2, 0xb2, 0xed, 0x38, 0xd4, 0xbe,
+ 0xb0, 0x69, 0xfe, 0x82, 0x71, 0x4a, 0x61, 0x0b, 0x54, 0x2f, 0xbf,
+ 0x8d, 0xa0, 0x6a, 0xa4, 0xae,
+};
+
+/*
+==== CCMP test mpdu 3 ====
+
+-- MPDU Fields
+
+41 Version = 0
+42 Type = 2 SubType = 11
+43 ToDS = 0 FromDS = 0
+44 MoreFrag = 0 Retry = 1
+45 PwrMgt = 0 moreData = 0
+46 Encrypt = 1
+47 Order = 1
+48 Duration = 25052
+49 A1 = d9-57-7d-f7-63-c8 DA
+50 A2 = b6-a8-8a-df-36-91 SA
+1 A3 = dc-4a-8b-ca-94-dd BSSID
+2 SC = 0x8260
+3 seqNum = 2086 (0x0826) fraqNum = 0 (0x00)
+4 QC = 0x0000
+5 MSDU Priority = 0 (0x0)
+6 Algorithm = AES_CCM
+7 Key ID = 2
+8 TK = 40 cf b7 a6 2e 88 01 3b d6 d3 af fc c1 91 04 1e
+9 PN = 52624639632814 (0x2FDCA0F3A5AE)
+10 802.11 Header = b8 c8 dc 61 d9 57 7d f7 63 c8 b6 a8 8a df 36 91
+11 dc 4a 8b ca 94 dd 60 82 20 85
+12 Muted 802.11 Header = 88 c0 d9 57 7d f7 63 c8 b6 a8 8a df 36 91
+13 dc 4a 8b ca 94 dd 00 00 00 00
+14 CCMP Header = ae a5 00 a0 f3 a0 dc 2f
+15 CCM Nonce = 00 b6 a8 8a df 36 91 2f dc a0 f3 a5 ae
+16 Plaintext Data = 2c 1b d0 36 83 1c 95 49 6c 5f 4d bf 3d 55 9e 72
+17 de 80 2a 18
+18 CCM MIC = fd 1f 1f 61 a9 fb 4b b3
+19 -- Encrypted MPDU with FCS
+20 b8 c8 dc 61 d9 57 7d f7 63 c8 b6 a8 8a df 36 91 dc 4a 8b ca 94 dd
+21 60 82 20 85 ae a5 00 a0 f3 a0 dc 2f 89 d8 58 03 40 b6 26 a0 b6 d4
+22 d0 13 bf 18 f2 91 b8 96 46 c8 fd 1f 1f 61 a9 fb 4b b3 60 3f 5a ad
+*/
+static const u_int8_t test3_key[] = { /* TK */
+ 0x40, 0xcf, 0xb7, 0xa6, 0x2e, 0x88, 0x01, 0x3b, 0xd6, 0xd3,
+ 0xaf, 0xfc, 0xc1, 0x91, 0x04, 0x1e
+};
+static const u_int8_t test3_plaintext[] = { /* Plaintext MPDU w/o MIC */
+ 0xb8, 0xc8, 0xdc, 0x61, 0xd9, 0x57, 0x7d, 0xf7, 0x63, 0xc8,
+ 0xb6, 0xa8, 0x8a, 0xdf, 0x36, 0x91, 0xdc, 0x4a, 0x8b, 0xca,
+ 0x94, 0xdd, 0x60, 0x82, 0x20, 0x85,
+ 0x2c, 0x1b, 0xd0, 0x36, 0x83, 0x1c, 0x95, 0x49, 0x6c, 0x5f,
+ 0x4d, 0xbf, 0x3d, 0x55, 0x9e, 0x72, 0xde, 0x80, 0x2a, 0x18
+};
+static const u_int8_t test3_encrypted[] = { /* Encrypted MPDU with MIC */
+ 0xb8, 0xc8, 0xdc, 0x61, 0xd9, 0x57, 0x7d, 0xf7, 0x63, 0xc8,
+ 0xb6, 0xa8, 0x8a, 0xdf, 0x36, 0x91, 0xdc, 0x4a, 0x8b, 0xca,
+ 0x94, 0xdd, 0x60, 0x82, 0x20, 0x85, 0xae, 0xa5, 0x00, 0xa0,
+ 0xf3, 0xa0, 0xdc, 0x2f, 0x89, 0xd8, 0x58, 0x03, 0x40, 0xb6,
+ 0x26, 0xa0, 0xb6, 0xd4, 0xd0, 0x13, 0xbf, 0x18, 0xf2, 0x91,
+ 0xb8, 0x96, 0x46, 0xc8, 0xfd, 0x1f, 0x1f, 0x61, 0xa9, 0xfb,
+ 0x4b, 0xb3,
+};
+
+/*
+==== CCMP test mpdu 4 ====
+
+-- MPDU Fields
+25 Version = 0
+26 Type = 2 SubType = 10
+27 ToDS = 0 FromDS = 1
+28 MoreFrag = 0 Retry = 1
+29 PwrMgt = 0 moreData = 0
+30 Encrypt = 1
+31 Order = 1
+32 Duration = 4410
+33 A1 = 71-2a-9d-df-11-db DA
+34 A2 = 8e-f8-22-73-47-01 BSSID
+35 A3 = 59-14-0d-d6-46-a2 SA
+36 SC = 0x2FC0
+37 seqNum = 764 (0x02FC) fraqNum = 0 (0x00)
+38 QC = 0x0007
+39 MSDU Priority = 7 (0x0)
+40 Algorithm = AES_CCM
+41 Key ID = 0
+42 TK = 8c 89 a2 eb c9 6c 76 02 70 7f cf 24 b3 2d 38 33
+43 PN = 270963670912995 (0xF670A55A0FE3)
+44 802.11 Header = a8 ca 3a 11 71 2a 9d df 11 db 8e f8 22 73 47 01
+45 59 14 0d d6 46 a2 c0 2f 67 a5
+46 Muted 802.11 Header = 88 c2 71 2a 9d df 11 db 8e f8 22 73 47 01
+47 59 14 0d d6 46 a2 00 00 07 00
+48 CCMP Header = e3 0f 00 20 5a a5 70 f6
+49 CCM Nonce = 07 8e f8 22 73 47 01 f6 70 a5 5a 0f e3
+50 Plaintext Data = 4f ad 2b 1c 29 0f a5 eb d8 72 fb c3 f3 a0 74 89
+51 8f 8b 2f bb
+52 CCM MIC = 31 fc 88 00 4f 35 ee 3d
+-- Encrypted MPDU with FCS
+2 a8 ca 3a 11 71 2a 9d df 11 db 8e f8 22 73 47 01 59 14 0d d6 46 a2
+3 c0 2f 67 a5 e3 0f 00 20 5a a5 70 f6 9d 59 b1 5f 37 14 48 c2 30 f4
+4 d7 39 05 2e 13 ab 3b 1a 7b 10 31 fc 88 00 4f 35 ee 3d 45 a7 4a 30
+*/
+static const u_int8_t test4_key[] = { /* TK */
+ 0x8c, 0x89, 0xa2, 0xeb, 0xc9, 0x6c, 0x76, 0x02,
+ 0x70, 0x7f, 0xcf, 0x24, 0xb3, 0x2d, 0x38, 0x33,
+};
+static const u_int8_t test4_plaintext[] = { /* Plaintext MPDU w/o MIC */
+ 0xa8, 0xca, 0x3a, 0x11, 0x71, 0x2a, 0x9d, 0xdf, 0x11, 0xdb,
+ 0x8e, 0xf8, 0x22, 0x73, 0x47, 0x01, 0x59, 0x14, 0x0d, 0xd6,
+ 0x46, 0xa2, 0xc0, 0x2f, 0x67, 0xa5,
+ 0x4f, 0xad, 0x2b, 0x1c, 0x29, 0x0f, 0xa5, 0xeb, 0xd8, 0x72,
+ 0xfb, 0xc3, 0xf3, 0xa0, 0x74, 0x89, 0x8f, 0x8b, 0x2f, 0xbb,
+};
+static const u_int8_t test4_encrypted[] = { /* Encrypted MPDU with MIC */
+ 0xa8, 0xca, 0x3a, 0x11, 0x71, 0x2a, 0x9d, 0xdf, 0x11, 0xdb,
+ 0x8e, 0xf8, 0x22, 0x73, 0x47, 0x01, 0x59, 0x14, 0x0d, 0xd6,
+ 0x46, 0xa2, 0xc0, 0x2f, 0x67, 0xa5, 0xe3, 0x0f, 0x00, 0x20,
+ 0x5a, 0xa5, 0x70, 0xf6, 0x9d, 0x59, 0xb1, 0x5f, 0x37, 0x14,
+ 0x48, 0xc2, 0x30, 0xf4, 0xd7, 0x39, 0x05, 0x2e, 0x13, 0xab,
+ 0x3b, 0x1a, 0x7b, 0x10, 0x31, 0xfc, 0x88, 0x00, 0x4f, 0x35,
+ 0xee, 0x3d,
+};
+
+/*
+==== CCMP test mpdu 5 ====
+
+-- MPDU Fields
+
+7 Version = 0
+8 Type = 2 SubType = 8
+9 ToDS = 0 FromDS = 1
+10 MoreFrag = 0 Retry = 1
+11 PwrMgt = 1 moreData = 0
+12 Encrypt = 1
+13 Order = 1
+14 Duration = 16664
+15 A1 = 45-de-c6-9a-74-80 DA
+16 A2 = f3-51-94-6b-c9-6b BSSID
+17 A3 = e2-76-fb-e6-c1-27 SA
+18 SC = 0xF280
+19 seqNum = 3880 (0x0F28) fraqNum = 0 (0x00)
+20 QC = 0x000b
+21 MSDU Priority = 0 (0x0)
+22 Algorithm = AES_CCM
+23 Key ID = 2
+24 TK = a5 74 d5 14 3b b2 5e fd de ff 30 12 2f df d0 66
+25 PN = 184717420531255 (0xA7FFE03C0E37)
+26 802.11 Header = 88 da 18 41 45 de c6 9a 74 80 f3 51 94 6b c9 6b
+27 e2 76 fb e6 c1 27 80 f2 4b 19
+28 Muted 802.11 Header = 88 c2 45 de c6 9a 74 80 f3 51 94 6b c9 6b
+29 e2 76 fb e6 c1 27 00 00 0b 00
+30 CCMP Header = 37 0e 00 a0 3c e0 ff a7
+31 CCM Nonce = 0b f3 51 94 6b c9 6b a7 ff e0 3c 0e 37
+32 Plaintext Data = 28 96 9b 95 4f 26 3a 80 18 a9 ef 70 a8 b0 51 46
+33 24 81 92 2e
+34 CCM MIC = ce 0c 3b e1 97 d3 05 eb
+35 -- Encrypted MPDU with FCS
+36 88 da 18 41 45 de c6 9a 74 80 f3 51 94 6b c9 6b e2 76 fb e6 c1 27
+37 80 f2 4b 19 37 0e 00 a0 3c e0 ff a7 eb 4a e4 95 6a 80 1d a9 62 4b
+38 7e 0c 18 b2 3e 61 5e c0 3a f6 ce 0c 3b e1 97 d3 05 eb c8 9e a1 b5
+*/
+static const u_int8_t test5_key[] = { /* TK */
+ 0xa5, 0x74, 0xd5, 0x14, 0x3b, 0xb2, 0x5e, 0xfd,
+ 0xde, 0xff, 0x30, 0x12, 0x2f, 0xdf, 0xd0, 0x66,
+};
+static const u_int8_t test5_plaintext[] = { /* Plaintext MPDU w/o MIC */
+ 0x88, 0xda, 0x18, 0x41, 0x45, 0xde, 0xc6, 0x9a, 0x74, 0x80,
+ 0xf3, 0x51, 0x94, 0x6b, 0xc9, 0x6b, 0xe2, 0x76, 0xfb, 0xe6,
+ 0xc1, 0x27, 0x80, 0xf2, 0x4b, 0x19,
+ 0x28, 0x96, 0x9b, 0x95, 0x4f, 0x26, 0x3a, 0x80, 0x18, 0xa9,
+ 0xef, 0x70, 0xa8, 0xb0, 0x51, 0x46, 0x24, 0x81, 0x92, 0x2e,
+};
+static const u_int8_t test5_encrypted[] = { /* Encrypted MPDU with MIC */
+ 0x88, 0xda, 0x18, 0x41, 0x45, 0xde, 0xc6, 0x9a, 0x74, 0x80,
+ 0xf3, 0x51, 0x94, 0x6b, 0xc9, 0x6b, 0xe2, 0x76, 0xfb, 0xe6,
+ 0xc1, 0x27, 0x80, 0xf2, 0x4b, 0x19, 0x37, 0x0e, 0x00, 0xa0,
+ 0x3c, 0xe0, 0xff, 0xa7, 0xeb, 0x4a, 0xe4, 0x95, 0x6a, 0x80,
+ 0x1d, 0xa9, 0x62, 0x4b, 0x7e, 0x0c, 0x18, 0xb2, 0x3e, 0x61,
+ 0x5e, 0xc0, 0x3a, 0xf6, 0xce, 0x0c, 0x3b, 0xe1, 0x97, 0xd3,
+ 0x05, 0xeb,
+};
+
+/*
+==== CCMP test mpdu 6 ====
+
+-- MPDU Fields
+
+41 Version = 0
+42 Type = 2 SubType = 8
+43 ToDS = 0 FromDS = 1
+44 MoreFrag = 0 Retry = 0
+45 PwrMgt = 1 moreData = 0
+46 Encrypt = 1
+47 Order = 0
+48 Duration = 8161
+49 A1 = 5a-f2-84-30-fd-ab DA
+50 A2 = bf-f9-43-b9-f9-a6 BSSID
+1 A3 = ab-1d-98-c7-fe-73 SA
+2 SC = 0x7150
+3 seqNum = 1813 (0x0715) fraqNum = 0 (0x00)
+4 QC = 0x000d
+5 PSDU Priority = 13 (0xd)
+6 Algorithm = AES_CCM
+7 Key ID = 1
+8 TK = f7 1e ea 4e 1f 58 80 4b 97 17 23 0a d0 61 46 41
+9 PN = 118205765159305 (0x6B81ECA48989)
+10 802.11 Header = 88 52 e1 1f 5a f2 84 30 fd ab bf f9 43 b9 f9 a6
+11 ab 1d 98 c7 fe 73 50 71 3d 6a
+12 Muted 802.11 Header = 88 42 5a f2 84 30 fd ab bf f9 43 b9 f9 a6
+13 ab 1d 98 c7 fe 73 00 00 0d 00
+14 CCMP Header = 89 89 00 60 a4 ec 81 6b
+15 CCM Nonce = 0d bf f9 43 b9 f9 a6 6b 81 ec a4 89 89
+16 Plaintext Data = ab fd a2 2d 3a 0b fc 9c c1 fc 07 93 63 c2 fc a1
+17 43 e6 eb 1d
+18 CCM MIC = 30 9a 8d 5c 46 6b bb 71
+19 -- Encrypted MPDU with FCS
+20 88 52 e1 1f 5a f2 84 30 fd ab bf f9 43 b9 f9 a6 ab 1d 98 c7 fe 73
+21 50 71 3d 6a 89 89 00 60 a4 ec 81 6b 9a 70 9b 60 a3 9d 40 b1 df b6
+22 12 e1 8b 5f 11 4b ad b6 cc 86 30 9a 8d 5c 46 6b bb 71 86 c0 4e 97
+*/
+static const u_int8_t test6_key[] = { /* TK */
+ 0xf7, 0x1e, 0xea, 0x4e, 0x1f, 0x58, 0x80, 0x4b,
+ 0x97, 0x17, 0x23, 0x0a, 0xd0, 0x61, 0x46, 0x41,
+};
+static const u_int8_t test6_plaintext[] = { /* Plaintext MPDU w/o MIC */
+ 0x88, 0x52, 0xe1, 0x1f, 0x5a, 0xf2, 0x84, 0x30, 0xfd, 0xab,
+ 0xbf, 0xf9, 0x43, 0xb9, 0xf9, 0xa6, 0xab, 0x1d, 0x98, 0xc7,
+ 0xfe, 0x73, 0x50, 0x71, 0x3d, 0x6a,
+ 0xab, 0xfd, 0xa2, 0x2d, 0x3a, 0x0b, 0xfc, 0x9c, 0xc1, 0xfc,
+ 0x07, 0x93, 0x63, 0xc2, 0xfc, 0xa1, 0x43, 0xe6, 0xeb, 0x1d,
+};
+static const u_int8_t test6_encrypted[] = { /* Encrypted MPDU with MIC */
+ 0x88, 0x52, 0xe1, 0x1f, 0x5a, 0xf2, 0x84, 0x30, 0xfd, 0xab,
+ 0xbf, 0xf9, 0x43, 0xb9, 0xf9, 0xa6, 0xab, 0x1d, 0x98, 0xc7,
+ 0xfe, 0x73, 0x50, 0x71, 0x3d, 0x6a, 0x89, 0x89, 0x00, 0x60,
+ 0xa4, 0xec, 0x81, 0x6b, 0x9a, 0x70, 0x9b, 0x60, 0xa3, 0x9d,
+ 0x40, 0xb1, 0xdf, 0xb6, 0x12, 0xe1, 0x8b, 0x5f, 0x11, 0x4b,
+ 0xad, 0xb6, 0xcc, 0x86, 0x30, 0x9a, 0x8d, 0x5c, 0x46, 0x6b,
+ 0xbb, 0x71,
+};
+
+/*
+==== CCMP test mpdu 7 ====
+
+-- MPDU Fields
+
+25 Version = 0
+26 Type = 2 SubType = 1 Data+CF-Ack
+27 ToDS = 1 FromDS = 0
+28 MoreFrag = 0 Retry = 1
+29 PwrMgt = 1 moreData = 1
+30 Encrypt = 1
+31 Order = 0
+32 Duration = 18049
+33 A1 = 9b-50-f4-fd-56-f6 BSSID
+34 A2 = ef-ec-95-20-16-91 SA
+35 A3 = 83-57-0c-4c-cd-ee DA
+36 SC = 0xA020
+37 seqNum = 2562 (0x0A02) fraqNum = 0 (0x00)
+38 Algorithm = AES_CCM
+39 Key ID = 3
+40 TK = 1b db 34 98 0e 03 81 24 a1 db 1a 89 2b ec 36 6a
+41 PN = 104368786630435 (0x5EEC4073E723)
+42 Header = 18 79 81 46 9b 50 f4 fd 56 f6 ef ec 95 20 16 91 83 57
+43 0c 4c cd ee 20 a0
+44 Muted MAC Header = 08 41 9b 50 f4 fd 56 f6 ef ec 95 20 16 91
+45 83 57 0c 4c cd ee 00 00
+46 CCMP Header = 23 e7 00 e0 73 40 ec 5e
+47 CCM Nonce = 00 ef ec 95 20 16 91 5e ec 40 73 e7 23
+48 Plaintext Data = 98 be ca 86 f4 b3 8d a2 0c fd f2 47 24 c5 8e b8
+49 35 66 53 39
+50 CCM MIC = 2d 09 57 ec fa be 95 b9
+-- Encrypted MPDU with FCS
+1 18 79 81 46 9b 50 f4 fd 56 f6 ef ec 95 20 16 91 83 57 0c 4c cd ee
+2 20 a0 23 e7 00 e0 73 40 ec 5e 12 c5 37 eb f3 ab 58 4e f1 fe f9 a1
+3 f3 54 7a 8c 13 b3 22 5a 2d 09 57 ec fa be 95 b9 aa fa 0c c8
+*/
+static const u_int8_t test7_key[] = { /* TK */
+ 0x1b, 0xdb, 0x34, 0x98, 0x0e, 0x03, 0x81, 0x24,
+ 0xa1, 0xdb, 0x1a, 0x89, 0x2b, 0xec, 0x36, 0x6a,
+};
+static const u_int8_t test7_plaintext[] = { /* Plaintext MPDU w/o MIC */
+ 0x18, 0x79, 0x81, 0x46, 0x9b, 0x50, 0xf4, 0xfd, 0x56, 0xf6,
+ 0xef, 0xec, 0x95, 0x20, 0x16, 0x91, 0x83, 0x57, 0x0c, 0x4c,
+ 0xcd, 0xee, 0x20, 0xa0,
+ 0x98, 0xbe, 0xca, 0x86, 0xf4, 0xb3, 0x8d, 0xa2, 0x0c, 0xfd,
+ 0xf2, 0x47, 0x24, 0xc5, 0x8e, 0xb8, 0x35, 0x66, 0x53, 0x39,
+};
+static const u_int8_t test7_encrypted[] = { /* Encrypted MPDU with MIC */
+ 0x18, 0x79, 0x81, 0x46, 0x9b, 0x50, 0xf4, 0xfd, 0x56, 0xf6,
+ 0xef, 0xec, 0x95, 0x20, 0x16, 0x91, 0x83, 0x57, 0x0c, 0x4c,
+ 0xcd, 0xee, 0x20, 0xa0, 0x23, 0xe7, 0x00, 0xe0, 0x73, 0x40,
+ 0xec, 0x5e, 0x12, 0xc5, 0x37, 0xeb, 0xf3, 0xab, 0x58, 0x4e,
+ 0xf1, 0xfe, 0xf9, 0xa1, 0xf3, 0x54, 0x7a, 0x8c, 0x13, 0xb3,
+ 0x22, 0x5a, 0x2d, 0x09, 0x57, 0xec, 0xfa, 0xbe, 0x95, 0xb9,
+};
+
+/*
+==== CCMP test mpdu 8 ====
+
+-- MPDU Fields
+
+6 Version = 0
+7 Type = 2 SubType = 11
+8 ToDS = 1 FromDS = 0
+9 MoreFrag = 0 Retry = 1
+10 PwrMgt = 1 moreData = 0
+11 Encrypt = 1
+12 Order = 1
+13 Duration = 29260
+14 A1 = 55-2d-5f-72-bb-70 BSSID
+15 A2 = ca-3f-3a-ae-60-c4 SA
+16 A3 = 8b-a9-b5-f8-2c-2f DA
+17 SC = 0xEB50
+18 seqNum = 3765 (0x0EB5) fraqNum = 0 (0x00)
+19 QC = 0x000a
+20 MSDU Priority = 10 (0xa)
+21 Algorithm = AES_CCM
+22 Key ID = 2
+23 TK = 6e ac 1b f5 4b d5 4e db 23 21 75 43 03 02 4c 71
+24 PN = 227588596223197 (0xCEFD996ECCDD)
+25 802.11 Header = b8 d9 4c 72 55 2d 5f 72 bb 70 ca 3f 3a ae 60 c4
+26 8b a9 b5 f8 2c 2f 50 eb 2a 55
+27 Muted 802.11 Header = 88 c1 55 2d 5f 72 bb 70 ca 3f 3a ae 60 c4
+28 8b a9 b5 f8 2c 2f 00 00 0a 00
+29 CCMP Header = dd cc 00 a0 6e 99 fd ce
+30 CCM Nonce = 0a ca 3f 3a ae 60 c4 ce fd 99 6e cc dd
+31 Plaintext Data = 57 cb 5c 0e 5f cd 88 5e 9a 42 39 e9 b9 ca d6 0d
+32 64 37 59 79
+33 CCM MIC = 6d ba 8e f7 f0 80 87 dd
+-- Encrypted MPDU with FCS
+35 b8 d9 4c 72 55 2d 5f 72 bb 70 ca 3f 3a ae 60 c4 8b a9 b5 f8 2c 2f
+36 50 eb 2a 55 dd cc 00 a0 6e 99 fd ce 4b f2 81 ef 8e c7 73 9f 91 59
+37 1b 97 a8 7d c1 4b 3f a1 74 62 6d ba 8e f7 f0 80 87 dd 0c 65 74 3f
+*/
+static const u_int8_t test8_key[] = { /* TK */
+ 0x6e, 0xac, 0x1b, 0xf5, 0x4b, 0xd5, 0x4e, 0xdb,
+ 0x23, 0x21, 0x75, 0x43, 0x03, 0x02, 0x4c, 0x71,
+};
+static const u_int8_t test8_plaintext[] = { /* Plaintext MPDU w/o MIC */
+ 0xb8, 0xd9, 0x4c, 0x72, 0x55, 0x2d, 0x5f, 0x72, 0xbb, 0x70,
+ 0xca, 0x3f, 0x3a, 0xae, 0x60, 0xc4, 0x8b, 0xa9, 0xb5, 0xf8,
+ 0x2c, 0x2f, 0x50, 0xeb, 0x2a, 0x55,
+ 0x57, 0xcb, 0x5c, 0x0e, 0x5f, 0xcd, 0x88, 0x5e, 0x9a, 0x42,
+ 0x39, 0xe9, 0xb9, 0xca, 0xd6, 0x0d, 0x64, 0x37, 0x59, 0x79,
+};
+static const u_int8_t test8_encrypted[] = { /* Encrypted MPDU with MIC */
+ 0xb8, 0xd9, 0x4c, 0x72, 0x55, 0x2d, 0x5f, 0x72, 0xbb, 0x70,
+ 0xca, 0x3f, 0x3a, 0xae, 0x60, 0xc4, 0x8b, 0xa9, 0xb5, 0xf8,
+ 0x2c, 0x2f, 0x50, 0xeb, 0x2a, 0x55, 0xdd, 0xcc, 0x00, 0xa0,
+ 0x6e, 0x99, 0xfd, 0xce, 0x4b, 0xf2, 0x81, 0xef, 0x8e, 0xc7,
+ 0x73, 0x9f, 0x91, 0x59, 0x1b, 0x97, 0xa8, 0x7d, 0xc1, 0x4b,
+ 0x3f, 0xa1, 0x74, 0x62, 0x6d, 0xba, 0x8e, 0xf7, 0xf0, 0x80,
+ 0x87, 0xdd,
+};
+
+#define TEST(n,name,cipher,keyix,pn) { \
+ name, IEEE80211_CIPHER_##cipher,keyix, pn##LL, \
+ test##n##_key, sizeof(test##n##_key), \
+ test##n##_plaintext, sizeof(test##n##_plaintext), \
+ test##n##_encrypted, sizeof(test##n##_encrypted) \
+}
+
+struct ciphertest {
+ const char *name;
+ int cipher;
+ int keyix;
+ u_int64_t pn;
+ const u_int8_t *key;
+ size_t key_len;
+ const u_int8_t *plaintext;
+ size_t plaintext_len;
+ const u_int8_t *encrypted;
+ size_t encrypted_len;
+} ccmptests[] = {
+ TEST(1, "CCMP test mpdu 1", AES_CCM, 0, 199027030681356),
+ TEST(2, "CCMP test mpdu 2", AES_CCM, 2, 54923164817386),
+ TEST(3, "CCMP test mpdu 3", AES_CCM, 2, 52624639632814),
+ TEST(4, "CCMP test mpdu 4", AES_CCM, 0, 270963670912995),
+ TEST(5, "CCMP test mpdu 5", AES_CCM, 2, 184717420531255),
+ TEST(6, "CCMP test mpdu 6", AES_CCM, 1, 118205765159305),
+ TEST(7, "CCMP test mpdu 7", AES_CCM, 3, 104368786630435),
+ TEST(8, "CCMP test mpdu 8", AES_CCM, 2, 227588596223197),
+};
+
+static void
+dumpdata(const char *tag, const void *p, size_t len)
+{
+ int i;
+
+ printf("%s: 0x%p len %u", tag, p, len);
+ for (i = 0; i < len; i++) {
+ if ((i % 16) == 0)
+ printf("\n%03d:", i);
+ printf(" %02x", ((const u_int8_t *)p)[i]);
+ }
+ printf("\n");
+}
+
+static void
+cmpfail(const void *gen, size_t genlen, const void *ref, size_t reflen)
+{
+ int i;
+
+ for (i = 0; i < genlen; i++)
+ if (((const u_int8_t *)gen)[i] != ((const u_int8_t *)ref)[i]) {
+ printf("first difference at byte %u\n", i);
+ break;
+ }
+ dumpdata("Generated", gen, genlen);
+ dumpdata("Reference", ref, reflen);
+}
+
+static void
+printtest(const struct ciphertest *t)
+{
+ printf("keyix %u pn %llu key_len %u plaintext_len %u\n"
+ , t->keyix
+ , t->pn
+ , t->key_len
+ , t->plaintext_len
+ );
+}
+
+static int
+runtest(struct ieee80211com *ic, struct ciphertest *t)
+{
+ struct ieee80211_key key;
+ struct mbuf *m = NULL;
+ const struct ieee80211_cipher *cip;
+ u_int8_t mac[IEEE80211_ADDR_LEN];
+
+ printf("%s: ", t->name);
+
+ /*
+ * Setup key.
+ */
+ memset(&key, 0, sizeof(key));
+ key.wk_flags = IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV;
+ key.wk_cipher = &ieee80211_cipher_none;
+ if (!ieee80211_crypto_newkey(ic, t->cipher,
+ IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV, &key)) {
+ printf("FAIL: ieee80211_crypto_newkey failed\n");
+ goto bad;
+ }
+
+ memcpy(key.wk_key, t->key, t->key_len);
+ key.wk_keylen = t->key_len;
+ key.wk_keyrsc = 0;
+ key.wk_keytsc = t->pn-1; /* PN-1 since we do encap */
+ if (!ieee80211_crypto_setkey(ic, &key, mac)) {
+ printf("FAIL: ieee80211_crypto_setkey failed\n");
+ goto bad;
+ }
+
+ /*
+ * Craft frame from plaintext data.
+ */
+ cip = key.wk_cipher;
+ m = m_getcl(M_NOWAIT, MT_HEADER, M_PKTHDR);
+ m->m_data += cip->ic_header;
+ memcpy(mtod(m, void *), t->plaintext, t->plaintext_len);
+ m->m_len = t->plaintext_len;
+ m->m_pkthdr.len = m->m_len;
+
+ /*
+ * Encrypt frame w/ MIC.
+ */
+ if (!cip->ic_encap(&key, m, t->keyix<<6)) {
+ printtest(t);
+ printf("FAIL: ccmp encap failed\n");
+ goto bad;
+ }
+ /*
+ * Verify: frame length, frame contents.
+ */
+ if (m->m_pkthdr.len != t->encrypted_len) {
+ printf("FAIL: encap data length mismatch\n");
+ printtest(t);
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->encrypted, t->encrypted_len);
+ goto bad;
+ } else if (memcmp(mtod(m, const void *), t->encrypted, t->encrypted_len)) {
+ printf("FAIL: encrypt data does not compare\n");
+ printtest(t);
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->encrypted, t->encrypted_len);
+ dumpdata("Plaintext", t->plaintext, t->plaintext_len);
+ goto bad;
+ }
+
+ /*
+ * Decrypt frame; strip MIC.
+ */
+ if (!cip->ic_decap(&key, m)) {
+ printf("FAIL: ccmp decap failed\n");
+ printtest(t);
+ cmpfail(mtod(m, const void *), m->m_len,
+ t->plaintext, t->plaintext_len);
+ goto bad;
+ }
+ /*
+ * Verify: frame length, frame contents.
+ */
+ if (m->m_pkthdr.len != t->plaintext_len) {
+ printf("FAIL: decap botch; length mismatch\n");
+ printtest(t);
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, t->plaintext_len);
+ goto bad;
+ } else if (memcmp(mtod(m, const void *), t->plaintext, t->plaintext_len)) {
+ printf("FAIL: decap botch; data does not compare\n");
+ printtest(t);
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, sizeof(t->plaintext));
+ goto bad;
+ }
+ m_freem(m);
+ ieee80211_crypto_delkey(ic, &key);
+ printf("PASS\n");
+ return 1;
+bad:
+ if (m != NULL)
+ m_freem(m);
+ ieee80211_crypto_delkey(ic, &key);
+ return 0;
+}
+
+/*
+ * Module glue.
+ */
+
+static int tests = -1;
+static int debug = 0;
+
+static int
+init_crypto_ccmp_test(void)
+{
+#define N(a) (sizeof(a)/sizeof(a[0]))
+ struct ieee80211com ic;
+ int i, pass, total;
+
+ memset(&ic, 0, sizeof(ic));
+ if (debug)
+ ic.ic_debug = IEEE80211_MSG_CRYPTO;
+ ieee80211_crypto_attach(&ic);
+
+ pass = 0;
+ total = 0;
+ for (i = 0; i < N(ccmptests); i++)
+ if (tests & (1<<i)) {
+ total++;
+ pass += runtest(&ic, &ccmptests[i]);
+ }
+ printf("%u of %u 802.11i AES-CCMP test vectors passed\n", pass, total);
+ ieee80211_crypto_detach(&ic);
+ return (pass == total ? 0 : -1);
+#undef N
+}
+
+static int
+test_ccmp_modevent(module_t mod, int type, void *unused)
+{
+ switch (type) {
+ case MOD_LOAD:
+ (void) init_crypto_ccmp_test();
+ return 0;
+ case MOD_UNLOAD:
+ return 0;
+ }
+ return EINVAL;
+}
+
+static moduledata_t test_ccmp_mod = {
+ "test_ccmp",
+ test_ccmp_modevent,
+ 0
+};
+DECLARE_MODULE(test_ccmp, test_ccmp_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
+MODULE_VERSION(test_ccmp, 1);
+MODULE_DEPEND(test_ccmp, wlan, 1, 1, 1);
diff --git a/tools/regression/net80211/tkip/Makefile b/tools/regression/net80211/tkip/Makefile
new file mode 100644
index 0000000..1a1f7ca
--- /dev/null
+++ b/tools/regression/net80211/tkip/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../sys/net80211
+
+KMOD= test_tkip
+SRCS+= test_tkip.c
+
+.include <bsd.kmod.mk>
diff --git a/tools/regression/net80211/tkip/test_tkip.c b/tools/regression/net80211/tkip/test_tkip.c
new file mode 100644
index 0000000..5a63978
--- /dev/null
+++ b/tools/regression/net80211/tkip/test_tkip.c
@@ -0,0 +1,388 @@
+/*-
+ * Copyright (c) 2004 Sam Leffler, Errno Consulting
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * TKIP test module.
+ */
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/systm.h>
+#include <sys/mbuf.h>
+#include <sys/module.h>
+
+#include <sys/socket.h>
+
+#include <net/if.h>
+#include <net/if_media.h>
+
+#include <net80211/ieee80211_var.h>
+
+/*
+Key 12 34 56 78 90 12 34 56 78 90 12 34 56 78 90 12
+ 34 56 78 90 12 34 56 78 90 12 34 56 78 90 12 34
+PN 0x000000000001
+IV 00 20 01 20 00 00 00 00
+Phase1 bb 58 07 1f 9e 93 b4 38 25 4b
+Phase2 00 20 01 4c fe 67 be d2 7c 86 7b 1b f8 02 8b 1c
+*/
+
+static const u_int8_t test1_key[] = {
+ 0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12,
+ 0x34, 0x56, 0x78, 0x90, 0x12,
+
+ 0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78, /* TX MIC */
+ /*
+ * NB: 11i test vector specifies a RX MIC key different
+ * from the TX key. But this doesn't work to enmic,
+ * encrypt, then decrypt, demic. So instead we use
+ * the same key for doing the MIC in each direction.
+ *
+ * XXX need additional vectors to test alternate MIC keys
+ */
+#if 0
+ 0x90, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34, /* 11i RX MIC */
+#else
+ 0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78, /* TX copy */
+#endif
+};
+static const u_int8_t test1_phase1[] = {
+ 0xbb, 0x58, 0x07, 0x1f, 0x9e, 0x93, 0xb4, 0x38, 0x25, 0x4b
+};
+static const u_int8_t test1_phase2[] = {
+ 0x00, 0x20, 0x01, 0x4c, 0xfe, 0x67, 0xbe, 0xd2, 0x7c, 0x86,
+ 0x7b, 0x1b, 0xf8, 0x02, 0x8b, 0x1c,
+};
+
+/* Plaintext MPDU with MIC */
+static const u_int8_t test1_plaintext[] = {
+0x08,0x42,0x2c,0x00,0x02,0x03,0x04,0x05,0x06,0x08,0x02,0x03,0x04,0x05,0x06,0x07,
+0x02,0x03,0x04,0x05,0x06,0x07,0xd0,0x02,
+0xaa,0xaa,0x03,0x00,0x00,0x00,0x08,0x00,0x45,0x00,0x00,0x54,0x00,0x00,0x40,0x00,
+0x40,0x01,0xa5,0x55,0xc0,0xa8,0x0a,0x02,0xc0,0xa8,0x0a,0x01,0x08,0x00,0x3a,0xb0,
+0x00,0x00,0x00,0x00,0xcd,0x4c,0x05,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x0a,0x0b,
+0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,
+0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,
+0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
+/* MIC */ 0x68,0x81,0xa3,0xf3,0xd6,0x48,0xd0,0x3c
+};
+
+/* Encrypted MPDU with MIC and ICV */
+static const u_int8_t test1_encrypted[] = {
+0x08,0x42,0x2c,0x00,0x02,0x03,0x04,0x05,0x06,0x08,0x02,0x03,0x04,0x05,0x06,0x07,
+0x02,0x03,0x04,0x05,0x06,0x07,0xd0,0x02,0x00,0x20,0x01,0x20,0x00,0x00,0x00,0x00,
+0xc0,0x0e,0x14,0xfc,0xe7,0xcf,0xab,0xc7,0x75,0x47,0xe6,0x66,0xe5,0x7c,0x0d,0xac,
+0x70,0x4a,0x1e,0x35,0x8a,0x88,0xc1,0x1c,0x8e,0x2e,0x28,0x2e,0x38,0x01,0x02,0x7a,
+0x46,0x56,0x05,0x5e,0xe9,0x3e,0x9c,0x25,0x47,0x02,0xe9,0x73,0x58,0x05,0xdd,0xb5,
+0x76,0x9b,0xa7,0x3f,0x1e,0xbb,0x56,0xe8,0x44,0xef,0x91,0x22,0x85,0xd3,0xdd,0x6e,
+0x54,0x1e,0x82,0x38,0x73,0x55,0x8a,0xdb,0xa0,0x79,0x06,0x8a,0xbd,0x7f,0x7f,0x50,
+0x95,0x96,0x75,0xac,0xc4,0xb4,0xde,0x9a,0xa9,0x9c,0x05,0xf2,0x89,0xa7,0xc5,0x2f,
+0xee,0x5b,0xfc,0x14,0xf6,0xf8,0xe5,0xf8
+};
+
+#define TEST(n,name,cipher,keyix,pn) { \
+ name, IEEE80211_CIPHER_##cipher,keyix, pn##LL, \
+ test##n##_key, sizeof(test##n##_key), \
+ test##n##_phase1, sizeof(test##n##_phase1), \
+ test##n##_phase2, sizeof(test##n##_phase2), \
+ test##n##_plaintext, sizeof(test##n##_plaintext), \
+ test##n##_encrypted, sizeof(test##n##_encrypted) \
+}
+
+struct ciphertest {
+ const char *name;
+ int cipher;
+ int keyix;
+ u_int64_t pn;
+ const u_int8_t *key;
+ size_t key_len;
+ const u_int8_t *phase1;
+ size_t phase1_len;
+ const u_int8_t *phase2;
+ size_t phase2_len;
+ const u_int8_t *plaintext;
+ size_t plaintext_len;
+ const u_int8_t *encrypted;
+ size_t encrypted_len;
+} tkiptests[] = {
+ TEST(1, "TKIP test mpdu 1", TKIP, 0, 0),
+};
+
+struct tkip_ctx {
+ struct ieee80211com *tc_ic; /* for diagnostics */
+
+ uint16_t tx_ttak[5];
+ int tx_phase1_done;
+ uint8_t tx_rc4key[16];
+
+ uint16_t rx_ttak[5];
+ int rx_phase1_done;
+ uint8_t rx_rc4key[16];
+ uint64_t rx_rsc; /* held until MIC verified */
+};
+
+static void
+dumpdata(const char *tag, const void *p, size_t len)
+{
+ int i;
+
+ printf("%s: 0x%p len %u", tag, p, len);
+ for (i = 0; i < len; i++) {
+ if ((i % 16) == 0)
+ printf("\n%03d:", i);
+ printf(" %02x", ((const u_int8_t *)p)[i]);
+ }
+ printf("\n");
+}
+
+static void
+cmpfail(const void *gen, size_t genlen, const void *ref, size_t reflen)
+{
+ int i;
+
+ for (i = 0; i < genlen; i++)
+ if (((const u_int8_t *)gen)[i] != ((const u_int8_t *)ref)[i]) {
+ printf("first difference at byte %u\n", i);
+ break;
+ }
+ dumpdata("Generated", gen, genlen);
+ dumpdata("Reference", ref, reflen);
+}
+
+static int
+runtest(struct ieee80211com *ic, struct ciphertest *t)
+{
+ struct tkip_ctx *ctx;
+ struct ieee80211_key key;
+ struct mbuf *m = NULL;
+ const struct ieee80211_cipher *cip;
+ u_int8_t mac[IEEE80211_ADDR_LEN];
+ u_int len;
+
+ printf("%s: ", t->name);
+
+ /*
+ * Setup key.
+ */
+ memset(&key, 0, sizeof(key));
+ key.wk_flags = IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV;
+ key.wk_cipher = &ieee80211_cipher_none;
+ if (!ieee80211_crypto_newkey(ic, IEEE80211_CIPHER_TKIP,
+ IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV, &key)) {
+ printf("FAIL: ieee80211_crypto_newkey failed\n");
+ goto bad;
+ }
+
+ memcpy(key.wk_key, t->key, t->key_len);
+ key.wk_keylen = 128/NBBY;
+ key.wk_keyrsc = 0;
+ key.wk_keytsc = t->pn;
+ if (!ieee80211_crypto_setkey(ic, &key, mac)) {
+ printf("FAIL: ieee80211_crypto_setkey failed\n");
+ goto bad;
+ }
+
+ /*
+ * Craft frame from plaintext data.
+ */
+ cip = key.wk_cipher;
+ m = m_getcl(M_NOWAIT, MT_HEADER, M_PKTHDR);
+ m->m_data += cip->ic_header;
+ len = t->plaintext_len - IEEE80211_WEP_MICLEN;
+ memcpy(mtod(m, void *), t->plaintext, len);
+ m->m_len = len;
+ m->m_pkthdr.len = m->m_len;
+
+ /*
+ * Add MIC.
+ */
+ if (!ieee80211_crypto_enmic(ic, &key, m)) {
+ printf("FAIL: tkip enmic failed\n");
+ goto bad;
+ }
+ /*
+ * Verify: frame length, frame contents.
+ */
+ if (m->m_pkthdr.len != t->plaintext_len) {
+ printf("FAIL: enmic botch; length mismatch\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, t->plaintext_len);
+ goto bad;
+ }
+ if (memcmp(mtod(m, const void *), t->plaintext, t->plaintext_len)) {
+ printf("FAIL: enmic botch\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, t->plaintext_len);
+ goto bad;
+ }
+ /*
+ * Encrypt frame w/ MIC.
+ */
+ if (!cip->ic_encap(&key, m, t->keyix<<6)) {
+ printf("FAIL: tkip encap failed\n");
+ goto bad;
+ }
+ /*
+ * Verify: phase1, phase2, frame length, frame contents.
+ */
+ ctx = key.wk_private;
+ if (memcmp(ctx->tx_ttak, t->phase1, t->phase1_len)) {
+ printf("FAIL: encrypt phase1 botch\n");
+ cmpfail(ctx->tx_ttak, sizeof(ctx->tx_ttak),
+ t->phase1, t->phase1_len);
+ goto bad;
+ } else if (memcmp(ctx->tx_rc4key, t->phase2, t->phase2_len)) {
+ printf("FAIL: encrypt phase2 botch\n");
+ cmpfail(ctx->tx_rc4key, sizeof(ctx->tx_rc4key),
+ t->phase2, t->phase2_len);
+ goto bad;
+ } else if (m->m_pkthdr.len != t->encrypted_len) {
+ printf("FAIL: encrypt data length mismatch\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->encrypted, t->encrypted_len);
+ goto bad;
+ } else if (memcmp(mtod(m, const void *), t->encrypted, m->m_pkthdr.len)) {
+ printf("FAIL: encrypt data does not compare\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->encrypted, t->encrypted_len);
+ dumpdata("Plaintext", t->plaintext, t->plaintext_len);
+ goto bad;
+ }
+
+ /*
+ * Decrypt frame.
+ */
+ if (!cip->ic_decap(&key, m)) {
+ printf("tkip decap failed\n");
+ /*
+ * Check reason for failure: phase1, phase2, frame data (ICV).
+ */
+ if (memcmp(ctx->rx_ttak, t->phase1, t->phase1_len)) {
+ printf("FAIL: decrypt phase1 botch\n");
+ cmpfail(ctx->rx_ttak, sizeof(ctx->rx_ttak),
+ t->phase1, t->phase1_len);
+ } else if (memcmp(ctx->rx_rc4key, t->phase2, t->phase2_len)) {
+ printf("FAIL: decrypt phase2 botch\n");
+ cmpfail(ctx->rx_rc4key, sizeof(ctx->rx_rc4key),
+ t->phase2, t->phase2_len);
+ } else {
+ printf("FAIL: decrypt data does not compare\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, t->plaintext_len);
+ }
+ goto bad;
+ }
+ /*
+ * Verify: frame length, frame contents.
+ */
+ if (m->m_pkthdr.len != t->plaintext_len) {
+ printf("FAIL: decap botch; length mismatch\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, t->plaintext_len);
+ goto bad;
+ }
+ if (memcmp(mtod(m, const void *), t->plaintext, t->plaintext_len)) {
+ printf("FAIL: decap botch; data does not compare\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, t->plaintext_len);
+ goto bad;
+ }
+ /*
+ * De-MIC decrypted frame.
+ */
+ if (!ieee80211_crypto_demic(ic, &key, m)) {
+ printf("FAIL: tkip demic failed\n");
+ goto bad;
+ }
+ /* XXX check frame length and contents... */
+ printf("PASS\n");
+ return 1;
+bad:
+ if (m != NULL)
+ m_freem(m);
+ ieee80211_crypto_delkey(ic, &key);
+ return 0;
+}
+
+/*
+ * Module glue.
+ */
+
+static int debug = 0;
+static int tests = -1;
+
+static int
+init_crypto_tkip_test(void)
+{
+#define N(a) (sizeof(a)/sizeof(a[0]))
+ struct ieee80211com ic;
+ int i, pass, total;
+
+ memset(&ic, 0, sizeof(ic));
+ if (debug)
+ ic.ic_debug = IEEE80211_MSG_CRYPTO;
+ ieee80211_crypto_attach(&ic);
+
+ pass = 0;
+ total = 0;
+ for (i = 0; i < N(tkiptests); i++)
+ if (tests & (1<<i)) {
+ total++;
+ pass += runtest(&ic, &tkiptests[i]);
+ }
+ printf("%u of %u 802.11i TKIP test vectors passed\n", pass, total);
+ ieee80211_crypto_detach(&ic);
+ return (pass == total ? 0 : -1);
+#undef N
+}
+
+static int
+test_tkip_modevent(module_t mod, int type, void *unused)
+{
+ switch (type) {
+ case MOD_LOAD:
+ (void) init_crypto_tkip_test();
+ return 0;
+ case MOD_UNLOAD:
+ return 0;
+ }
+ return EINVAL;
+}
+
+static moduledata_t test_tkip_mod = {
+ "test_tkip",
+ test_tkip_modevent,
+ 0
+};
+DECLARE_MODULE(test_tkip, test_tkip_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
+MODULE_VERSION(test_tkip, 1);
+MODULE_DEPEND(test_tkip, wlan, 1, 1, 1);
diff --git a/tools/regression/net80211/wep/Makefile b/tools/regression/net80211/wep/Makefile
new file mode 100644
index 0000000..1ab4712
--- /dev/null
+++ b/tools/regression/net80211/wep/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../sys/net80211
+
+KMOD= test_wep
+SRCS+= test_wep.c
+
+.include <bsd.kmod.mk>
diff --git a/tools/regression/net80211/wep/test_wep.c b/tools/regression/net80211/wep/test_wep.c
new file mode 100644
index 0000000..b498195
--- /dev/null
+++ b/tools/regression/net80211/wep/test_wep.c
@@ -0,0 +1,335 @@
+/*-
+ * Copyright (c) 2004 Sam Leffler, Errno Consulting
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * WEP test module.
+ *
+ * Test vectors come from section I.7.2 of P802.11i/D7.0, October 2003.
+ *
+ * To use this tester load the net80211 layer (either as a module or
+ * by statically configuring it into your kernel), then insmod this
+ * module. It should automatically run all test cases and print
+ * information for each. To run one or more tests you can specify a
+ * tests parameter to the module that is a bit mask of the set of tests
+ * you want; e.g. insmod wep_test tests=7 will run only test mpdu's
+ * 1, 2, and 3.
+ */
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/systm.h>
+#include <sys/mbuf.h>
+#include <sys/module.h>
+
+#include <sys/socket.h>
+
+#include <net/if.h>
+#include <net/if_media.h>
+
+#include <net80211/ieee80211_var.h>
+
+/*
+MPDU data
+ aa aa 03 00 00 00 08 00 45 00 00 4e 66 1a 00 00 80 11 be 64 0a 00 01 22
+ 0a ff ff ff 00 89 00 89 00 3a 00 00 80 a6 01 10 00 01 00 00 00 00 00 00
+ 20 45 43 45 4a 45 48 45 43 46 43 45 50 46 45 45 49 45 46 46 43 43 41 43
+ 41 43 41 43 41 43 41 41 41 00 00 20 00 01
+
+RC4 encryption is performed as follows:
+17
+18 Key fb 02 9e 30 31 32 33 34
+Plaintext
+ aa aa 03 00 00 00 08 00 45 00 00 4e 66 1a 00 00 80 11 be 64 0a 00 01
+ 22 0a ff ff ff 00 89 00 89 00 3a 00 00 80 a6 01 10 00 01 00 00 00 00
+ 00 00 20 45 43 45 4a 45 48 45 43 46 43 45 50 46 45 45 49 45 46 46 43
+ 43 41 43 41 43 41 43 41 43 41 41 41 00 00 20 00 01 1b d0 b6 04
+Ciphertext
+ f6 9c 58 06 bd 6c e8 46 26 bc be fb 94 74 65 0a ad 1f 79 09 b0 f6 4d
+ 5f 58 a5 03 a2 58 b7 ed 22 eb 0e a6 49 30 d3 a0 56 a5 57 42 fc ce 14
+ 1d 48 5f 8a a8 36 de a1 8d f4 2c 53 80 80 5a d0 c6 1a 5d 6f 58 f4 10
+ 40 b2 4b 7d 1a 69 38 56 ed 0d 43 98 e7 ae e3 bf 0e 2a 2c a8 f7
+The plaintext consists of the MPDU data, followed by a 4-octet CRC-32
+calculated over the MPDU data.
+19 The expanded MPDU, after WEP encapsulation, is as follows:
+20
+21 IV fb 02 9e 80
+MPDU data
+ f6 9c 58 06 bd 6c e8 46 26 bc be fb 94 74 65 0a ad 1f 79 09 b0 f6 4d 5f 58 a5
+ 03 a2 58 b7 ed 22 eb 0e a6 49 30 d3 a0 56 a5 57 42 fc ce 14 1d 48 5f 8a a8 36
+ de a1 8d f4 2c 53 80 80 5a d0 c6 1a 5d 6f 58 f4 10 40 b2 4b 7d 1a 69 38 56 ed
+ 0d 43 98 e7 ae e3 bf 0e
+ICV 2a 2c a8 f7
+*/
+static const u_int8_t test1_key[] = { /* TK (w/o IV) */
+ 0x30, 0x31, 0x32, 0x33, 0x34,
+};
+static const u_int8_t test1_plaintext[] = { /* Plaintext MPDU */
+ 0x08, 0x48, 0xc3, 0x2c, 0x0f, 0xd2, 0xe1, 0x28, /* 802.11 Header */
+ 0xa5, 0x7c, 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08,
+ 0xab, 0xae, 0xa5, 0xb8, 0xfc, 0xba, 0x80, 0x33,
+ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, /* Plaintext data */
+ 0x45, 0x00, 0x00, 0x4e, 0x66, 0x1a, 0x00, 0x00,
+ 0x80, 0x11, 0xbe, 0x64, 0x0a, 0x00, 0x01, 0x22,
+ 0x0a, 0xff, 0xff, 0xff, 0x00, 0x89, 0x00, 0x89,
+ 0x00, 0x3a, 0x00, 0x00, 0x80, 0xa6, 0x01, 0x10,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x45, 0x43, 0x45, 0x4a, 0x45, 0x48, 0x45,
+ 0x43, 0x46, 0x43, 0x45, 0x50, 0x46, 0x45, 0x45,
+ 0x49, 0x45, 0x46, 0x46, 0x43, 0x43, 0x41, 0x43,
+ 0x41, 0x43, 0x41, 0x43, 0x41, 0x43, 0x41, 0x41,
+ 0x41, 0x00, 0x00, 0x20, 0x00, 0x01,
+};
+static const u_int8_t test1_encrypted[] = { /* Encrypted MPDU */
+ 0x08, 0x48, 0xc3, 0x2c, 0x0f, 0xd2, 0xe1, 0x28,
+ 0xa5, 0x7c, 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08,
+ 0xab, 0xae, 0xa5, 0xb8, 0xfc, 0xba, 0x80, 0x33,
+ 0xfb, 0x02, 0x9e, 0x80, 0xf6, 0x9c, 0x58, 0x06,
+ 0xbd, 0x6c, 0xe8, 0x46, 0x26, 0xbc, 0xbe, 0xfb,
+ 0x94, 0x74, 0x65, 0x0a, 0xad, 0x1f, 0x79, 0x09,
+ 0xb0, 0xf6, 0x4d, 0x5f, 0x58, 0xa5, 0x03, 0xa2,
+ 0x58, 0xb7, 0xed, 0x22, 0xeb, 0x0e, 0xa6, 0x49,
+ 0x30, 0xd3, 0xa0, 0x56, 0xa5, 0x57, 0x42, 0xfc,
+ 0xce, 0x14, 0x1d, 0x48, 0x5f, 0x8a, 0xa8, 0x36,
+ 0xde, 0xa1, 0x8d, 0xf4, 0x2c, 0x53, 0x80, 0x80,
+ 0x5a, 0xd0, 0xc6, 0x1a, 0x5d, 0x6f, 0x58, 0xf4,
+ 0x10, 0x40, 0xb2, 0x4b, 0x7d, 0x1a, 0x69, 0x38,
+ 0x56, 0xed, 0x0d, 0x43, 0x98, 0xe7, 0xae, 0xe3,
+ 0xbf, 0x0e, 0x2a, 0x2c, 0xa8, 0xf7,
+};
+
+/* XXX fix byte order of iv */
+#define TEST(n,name,cipher,keyix,iv0,iv1,iv2,iv3) { \
+ name, IEEE80211_CIPHER_##cipher,keyix, { iv2,iv1,iv0,iv3 }, \
+ test##n##_key, sizeof(test##n##_key), \
+ test##n##_plaintext, sizeof(test##n##_plaintext), \
+ test##n##_encrypted, sizeof(test##n##_encrypted) \
+}
+
+struct ciphertest {
+ const char *name;
+ int cipher;
+ int keyix;
+ u_int8_t iv[4];
+ const u_int8_t *key;
+ size_t key_len;
+ const u_int8_t *plaintext;
+ size_t plaintext_len;
+ const u_int8_t *encrypted;
+ size_t encrypted_len;
+} weptests[] = {
+ TEST(1, "WEP test mpdu 1", WEP, 2, 0xfb, 0x02, 0x9e, 0x80),
+};
+
+static void
+dumpdata(const char *tag, const void *p, size_t len)
+{
+ int i;
+
+ printf("%s: 0x%p len %u", tag, p, len);
+ for (i = 0; i < len; i++) {
+ if ((i % 16) == 0)
+ printf("\n%03d:", i);
+ printf(" %02x", ((const u_int8_t *)p)[i]);
+ }
+ printf("\n");
+}
+
+static void
+cmpfail(const void *gen, size_t genlen, const void *ref, size_t reflen)
+{
+ int i;
+
+ for (i = 0; i < genlen; i++)
+ if (((const u_int8_t *)gen)[i] != ((const u_int8_t *)ref)[i]) {
+ printf("first difference at byte %u\n", i);
+ break;
+ }
+ dumpdata("Generated", gen, genlen);
+ dumpdata("Reference", ref, reflen);
+}
+
+struct wep_ctx_hw { /* for use with h/w support */
+ struct ieee80211com *wc_ic; /* for diagnostics */
+ u_int32_t wc_iv; /* initial vector for crypto */
+};
+
+static int
+runtest(struct ieee80211com *ic, struct ciphertest *t)
+{
+ struct ieee80211_key key;
+ struct mbuf *m = NULL;
+ const struct ieee80211_cipher *cip;
+ u_int8_t mac[IEEE80211_ADDR_LEN];
+ struct wep_ctx_hw *ctx;
+
+ printf("%s: ", t->name);
+
+ /*
+ * Setup key.
+ */
+ memset(&key, 0, sizeof(key));
+ key.wk_flags = IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV;
+ key.wk_cipher = &ieee80211_cipher_none;
+ if (!ieee80211_crypto_newkey(ic, t->cipher,
+ IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV, &key)) {
+ printf("FAIL: ieee80211_crypto_newkey failed\n");
+ goto bad;
+ }
+
+ memcpy(key.wk_key, t->key, t->key_len);
+ key.wk_keylen = t->key_len;
+ if (!ieee80211_crypto_setkey(ic, &key, mac)) {
+ printf("FAIL: ieee80211_crypto_setkey failed\n");
+ goto bad;
+ }
+ cip = key.wk_cipher;
+
+ /*
+ * Craft frame from plaintext data.
+ */
+ cip = key.wk_cipher;
+ m = m_getcl(M_NOWAIT, MT_HEADER, M_PKTHDR);
+ memcpy(mtod(m, void *), t->encrypted, t->encrypted_len);
+ m->m_len = t->encrypted_len;
+ m->m_pkthdr.len = m->m_len;
+
+ /*
+ * Decrypt frame.
+ */
+ if (!cip->ic_decap(&key, m)) {
+ printf("FAIL: wep decap failed\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, t->plaintext_len);
+ goto bad;
+ }
+ /*
+ * Verify: frame length, frame contents.
+ */
+ if (m->m_pkthdr.len != t->plaintext_len) {
+ printf("FAIL: decap botch; length mismatch\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, t->plaintext_len);
+ goto bad;
+ } else if (memcmp(mtod(m, const void *), t->plaintext, t->plaintext_len)) {
+ printf("FAIL: decap botch; data does not compare\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->plaintext, sizeof(t->plaintext));
+ goto bad;
+ }
+
+ /*
+ * Encrypt frame.
+ */
+ ctx = (struct wep_ctx_hw *) key.wk_private;
+ memcpy(&ctx->wc_iv, t->iv, sizeof(t->iv)); /* for encap/encrypt */
+ if (!cip->ic_encap(&key, m, t->keyix<<6)) {
+ printf("FAIL: wep encap failed\n");
+ goto bad;
+ }
+ /*
+ * Verify: frame length, frame contents.
+ */
+ if (m->m_pkthdr.len != t->encrypted_len) {
+ printf("FAIL: encap data length mismatch\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->encrypted, t->encrypted_len);
+ goto bad;
+ } else if (memcmp(mtod(m, const void *), t->encrypted, m->m_pkthdr.len)) {
+ printf("FAIL: encrypt data does not compare\n");
+ cmpfail(mtod(m, const void *), m->m_pkthdr.len,
+ t->encrypted, t->encrypted_len);
+ dumpdata("Plaintext", t->plaintext, t->plaintext_len);
+ goto bad;
+ }
+ m_freem(m);
+ ieee80211_crypto_delkey(ic, &key);
+ printf("PASS\n");
+ return 1;
+bad:
+ if (m != NULL)
+ m_freem(m);
+ ieee80211_crypto_delkey(ic, &key);
+ return 0;
+}
+
+/*
+ * Module glue.
+ */
+
+static int tests = -1;
+static int debug = 0;
+
+static int
+init_crypto_wep_test(void)
+{
+#define N(a) (sizeof(a)/sizeof(a[0]))
+ struct ieee80211com ic;
+ int i, pass, total;
+
+ memset(&ic, 0, sizeof(ic));
+ if (debug)
+ ic.ic_debug = IEEE80211_MSG_CRYPTO;
+ ieee80211_crypto_attach(&ic);
+ pass = 0;
+ total = 0;
+ for (i = 0; i < N(weptests); i++)
+ if (tests & (1<<i)) {
+ total++;
+ pass += runtest(&ic, &weptests[i]);
+ }
+ printf("%u of %u 802.11i WEP test vectors passed\n", pass, total);
+ ieee80211_crypto_detach(&ic);
+ return (pass == total ? 0 : -1);
+#undef N
+}
+
+static int
+test_wep_modevent(module_t mod, int type, void *unused)
+{
+ switch (type) {
+ case MOD_LOAD:
+ (void) init_crypto_wep_test();
+ return 0;
+ case MOD_UNLOAD:
+ return 0;
+ }
+ return EINVAL;
+}
+
+static moduledata_t test_wep_mod = {
+ "test_wep",
+ test_wep_modevent,
+ 0
+};
+DECLARE_MODULE(test_wep, test_wep_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
+MODULE_VERSION(test_wep, 1);
+MODULE_DEPEND(test_wep, wlan, 1, 1, 1);
diff --git a/tools/regression/netatalk/simple_send/Makefile b/tools/regression/netatalk/simple_send/Makefile
new file mode 100644
index 0000000..e01fcea
--- /dev/null
+++ b/tools/regression/netatalk/simple_send/Makefile
@@ -0,0 +1,8 @@
+#
+# $FreeBSD$
+#
+
+PROG= simple_send
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netatalk/simple_send/simple_send.c b/tools/regression/netatalk/simple_send/simple_send.c
new file mode 100644
index 0000000..9dbbce8
--- /dev/null
+++ b/tools/regression/netatalk/simple_send/simple_send.c
@@ -0,0 +1,162 @@
+/*-
+ * Copyright (c) 2004 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <arpa/inet.h>
+
+#include <netatalk/at.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * This is a simple test tool to bind netatalk SOCK_DGRAM sockets and perform
+ * simple send operations that exercise each combination of bound and
+ * connected endpoints, with the intent of exercising the various kernel send
+ * case.
+ *
+ * In order to run this test, configure NETATALK into the kernel. Use
+ * ifconfig to set an appletalk address on an interface. Run this tool with
+ * two arguments: a local address and port number, and a remote address and
+ * port number.
+ *
+ * It is recommended that you try running it with some interesting address
+ * and port thresholds, including ATADDR_ANYNET, ATADDR_ANYNODE,
+ * ATADDR_ANYPORT, and ATADDR_ANYBCAST. Try both remote unicast addresses
+ * and the local address, which will help to test local delivery (although
+ * not socket receive).
+ */
+
+/*
+ * Create a netatalk socket with specified source and destination, if
+ * desired. If a source is specified, bind it. If a destination is
+ * specified, connect it.
+ */
+static int
+socket_between(struct sockaddr_at *from, struct sockaddr_at *to)
+{
+ int s;
+
+ s = socket(PF_APPLETALK, SOCK_DGRAM, ATPROTO_DDP);
+ if (s == -1)
+ errx(1, "socket: %s\n", strerror(errno));
+
+ if (from != NULL) {
+ if (bind(s, (struct sockaddr *)from, sizeof(*from)) != 0)
+ errx(1, "bind: %u.%u returned %s\n",
+ ntohs(from->sat_addr.s_net), from->sat_addr.s_node,
+ strerror(errno));
+ }
+
+ if (to != NULL) {
+ if (connect(s, (struct sockaddr *)to, sizeof(*to)) != 0)
+ errx(1, "connect: %u.%u returned %s\n",
+ ntohs(to->sat_addr.s_net), to->sat_addr.s_node,
+ strerror(errno));
+ }
+ return (s);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct sockaddr_at sat_from, sat_to;
+ char *addr_from, *addr_to;
+ u_int net, node, port;
+ char msg[] = "TEST";
+ ssize_t len;
+ int s;
+
+ if (argc != 3)
+ errx(1, "simple_send from_addr to_addr");
+
+ addr_from = argv[1];
+ sat_from.sat_family = AF_APPLETALK;
+ sat_from.sat_len = sizeof(sat_from);
+ if (sscanf(addr_from, "%u.%u:%u", &net, &node, &port) != 3 ||
+ net > 0xfff || node > 0xfe)
+ errx(1, "%s: illegal address", addr_from);
+ sat_from.sat_addr.s_net = htons(net);
+ sat_from.sat_addr.s_node = node;
+ sat_from.sat_port = port;
+
+ addr_to = argv[2];
+ sat_to.sat_family = AF_APPLETALK;
+ sat_to.sat_len = sizeof(sat_to);
+ if (sscanf(addr_to, "%u.%u:%u", &net, &node, &port) != 3 ||
+ net > 0xffff || node > 0xfe)
+ errx(1, "%s: illegal address", addr_to);
+ sat_to.sat_addr.s_net = htons(net);
+ sat_to.sat_addr.s_node = node;
+ sat_from.sat_port = port;
+
+ printf("Address source is %u.%u:%u, address destination is %u.%u:%u\n",
+ ntohs(sat_from.sat_addr.s_net), sat_from.sat_addr.s_node,
+ sat_from.sat_port,
+ ntohs(sat_to.sat_addr.s_net), sat_to.sat_addr.s_node,
+ sat_to.sat_port);
+
+ /*
+ * First, create a socket and use explicit sendto() to specify
+ * destination.
+ */
+ s = socket_between(NULL, NULL);
+ len = sendto(s, msg, sizeof(msg), 0, (struct sockaddr *)&sat_to,
+ sizeof(sat_to));
+ close(s);
+
+ /*
+ * Next, specify the destination for a connect() but not the source.
+ */
+ s = socket_between(NULL, &sat_to);
+ len = send(s, msg, sizeof(msg), 0);
+ close(s);
+
+ /*
+ * Now, bind the source, but not connect the destination.
+ */
+ s = socket_between(&sat_from, NULL);
+ len = sendto(s, msg, sizeof(msg), 0, (struct sockaddr *)&sat_to,
+ sizeof(sat_to));
+ close(s);
+
+ /*
+ * Finally, bind and connect.
+ */
+ s = socket_between(&sat_from, &sat_to);
+ len = send(s, msg, sizeof(msg), 0);
+ close(s);
+
+ exit(0);
+}
diff --git a/tools/regression/netinet/ipbroadcast/Makefile b/tools/regression/netinet/ipbroadcast/Makefile
new file mode 100644
index 0000000..5be8aa8
--- /dev/null
+++ b/tools/regression/netinet/ipbroadcast/Makefile
@@ -0,0 +1,10 @@
+#
+# $FreeBSD$
+#
+
+PROG= ipbroadcast
+NO_MAN=
+
+WARNS?= 6
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/ipbroadcast/ipbroadcast.c b/tools/regression/netinet/ipbroadcast/ipbroadcast.c
new file mode 100644
index 0000000..8d6f247
--- /dev/null
+++ b/tools/regression/netinet/ipbroadcast/ipbroadcast.c
@@ -0,0 +1,366 @@
+/*-
+ * Copyright (c) 2007 Bruce M. Simpson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Test utility for IPv4 broadcast sockets.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <signal.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include <err.h>
+#include <errno.h>
+#include <getopt.h>
+#include <pwd.h>
+#include <unistd.h>
+#include <netdb.h>
+#include <libgen.h>
+
+#ifndef IP_SENDIF
+#define IP_SENDIF 24 /* XXX */
+#endif
+
+#ifndef IPPROTO_ZEROHOP
+#define IPPROTO_ZEROHOP 114 /* any 0-hop protocol */
+#endif
+
+#define DEFAULT_PORT 6698
+#define DEFAULT_PAYLOAD_SIZE 24
+#define DEFAULT_TTL 1
+
+#define MY_CMSG_SIZE \
+ CMSG_SPACE(sizeof(struct in_addr)) + \
+ CMSG_SPACE(sizeof(struct sockaddr_dl))
+
+static char *progname = NULL;
+
+static void
+usage(void)
+{
+
+ fprintf(stderr, "IPv4 broadcast test program. Sends a %d byte UDP "
+ "datagram to <dest>:<port>.\n\n", DEFAULT_PAYLOAD_SIZE);
+ fprintf(stderr,
+"usage: %s [-1] [-A laddr] [-b] [-B] [-d] [-i iface] [-l len]\n"
+" [-p port] [-R] [-s srcaddr] [-t ttl] <dest>\n",
+ progname);
+ fprintf(stderr, "-1: Set IP_ONESBCAST\n");
+ fprintf(stderr, "-A: specify laddr (default: INADDR_ANY)\n");
+ fprintf(stderr, "-b: bind socket to <laddr>:<lport>\n");
+ fprintf(stderr, "-B: Set SO_BROADCAST\n");
+ fprintf(stderr, "-d: Set SO_DONTROUTE\n");
+ fprintf(stderr, "-i: Set IP_SENDIF <iface> (if supported)\n");
+ fprintf(stderr, "-l: Set payload size to <len>\n");
+ fprintf(stderr, "-p: Set local and remote port (default: %d)\n",
+ DEFAULT_PORT);
+ fprintf(stderr, "-R: Use raw IP (protocol %d)\n", IPPROTO_ZEROHOP);
+#if 0
+ fprintf(stderr, "-r: Fill datagram with random bytes\n");
+#endif
+ fprintf(stderr, "-s: Set IP_SENDSRCADDR to <srcaddr>\n");
+ fprintf(stderr, "-t: Set IP_TTL to <ttl>\n");
+
+ exit(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ char *buf;
+ char cmsgbuf[MY_CMSG_SIZE];
+ struct iovec iov[1];
+ struct msghdr msg;
+ struct sockaddr_in dsin;
+ struct sockaddr_in laddr;
+ struct sockaddr_dl *sdl;
+ struct cmsghdr *cmsgp;
+ struct in_addr dstaddr;
+ struct in_addr *srcaddrp;
+ char *ifname;
+ char *laddr_s;
+ char *srcaddr_s;
+ int ch;
+ int dobind;
+ int dobroadcast;
+ int dontroute;
+ int doonesbcast;
+ int dorandom;
+ int dorawip;
+ size_t buflen;
+ ssize_t nbytes;
+ int portno;
+ int ret;
+ int s;
+ socklen_t soptlen;
+ int soptval;
+ int ttl;
+
+ dobind = 0;
+ dobroadcast = 0;
+ dontroute = 0;
+ doonesbcast = 0;
+ dorandom = 0;
+ dorawip = 0;
+
+ ifname = NULL;
+ dstaddr.s_addr = INADDR_ANY;
+ laddr_s = NULL;
+ srcaddr_s = NULL;
+ portno = DEFAULT_PORT;
+ ttl = DEFAULT_TTL;
+
+ buf = NULL;
+ buflen = DEFAULT_PAYLOAD_SIZE;
+
+ progname = basename(argv[0]);
+ while ((ch = getopt(argc, argv, "1A:bBdi:l:p:Rrs:t:")) != -1) {
+ switch (ch) {
+ case '1':
+ doonesbcast = 1;
+ break;
+ case 'A':
+ laddr_s = optarg;
+ break;
+ case 'b':
+ dobind = 1;
+ break;
+ case 'B':
+ dobroadcast = 1;
+ break;
+ case 'd':
+ dontroute = 1;
+ break;
+ case 'i':
+ ifname = optarg;
+ break;
+ case 'l':
+ buflen = atoi(optarg);
+ break;
+ case 'p':
+ portno = atoi(optarg);
+ break;
+ case 'R':
+ dorawip = 1;
+ break;
+ case 'r':
+ dorandom = 1;
+ break;
+ case 's':
+ srcaddr_s = optarg;
+ break;
+ case 't':
+ ttl = atoi(optarg);
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (argc != 1)
+ usage();
+ if (argv[0] == NULL || inet_aton(argv[0], &dstaddr) == 0)
+ usage();
+ /* IP_SENDSRCADDR and IP_SENDIF are mutually exclusive just now. */
+ if (srcaddr_s != NULL && ifname != NULL)
+ usage();
+ if (dorawip) {
+ if (geteuid() != 0)
+ fprintf(stderr, "WARNING: not running as root.\n");
+ s = socket(PF_INET, SOCK_RAW, IPPROTO_ZEROHOP);
+ } else {
+ s = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ }
+ if (s == -1) {
+ perror("socket");
+ exit(EXIT_FAILURE);
+ }
+
+ if (dontroute) {
+ soptval = 1;
+ soptlen = sizeof(soptval);
+ ret = setsockopt(s, SOL_SOCKET, SO_DONTROUTE, &soptval,
+ soptlen);
+ if (ret == -1) {
+ perror("setsockopt SO_DONTROUTE");
+ close(s);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ if (dobroadcast) {
+ soptval = 1;
+ soptlen = sizeof(soptval);
+ ret = setsockopt(s, SOL_SOCKET, SO_BROADCAST, &soptval,
+ soptlen);
+ if (ret == -1) {
+ perror("setsockopt SO_BROADCAST");
+ close(s);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ soptval = ttl;
+ soptlen = sizeof(soptval);
+ ret = setsockopt(s, IPPROTO_IP, IP_TTL, &soptval, soptlen);
+ if (ret == -1) {
+ perror("setsockopt IPPROTO_IP IP_TTL");
+ close(s);
+ exit(EXIT_FAILURE);
+ }
+
+ if (doonesbcast) {
+ soptval = 1;
+ soptlen = sizeof(soptval);
+ ret = setsockopt(s, IPPROTO_IP, IP_ONESBCAST, &soptval,
+ soptlen);
+ if (ret == -1) {
+ perror("setsockopt IP_ONESBCAST");
+ close(s);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ if (dobind) {
+ memset(&laddr, 0, sizeof(struct sockaddr_in));
+ laddr.sin_family = AF_INET;
+ laddr.sin_len = sizeof(struct sockaddr_in);
+ if (laddr_s != NULL) {
+ laddr.sin_addr.s_addr = inet_addr(laddr_s);
+ } else
+ laddr.sin_addr.s_addr = INADDR_ANY;
+ laddr.sin_port = htons(portno);
+ ret = bind(s, (struct sockaddr *)&laddr, sizeof(laddr));
+ if (ret == -1) {
+ perror("bind");
+ close(s);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ memset(&dsin, 0, sizeof(struct sockaddr_in));
+ dsin.sin_family = AF_INET;
+ dsin.sin_len = sizeof(struct sockaddr_in);
+ dsin.sin_addr.s_addr = dstaddr.s_addr;
+ dsin.sin_port = htons(portno);
+
+ buf = malloc(buflen);
+ if (buf == NULL) {
+ perror("malloc");
+ close(s);
+ exit(EXIT_FAILURE);
+ }
+ memset(iov, 0, sizeof(iov));
+ iov[0].iov_base = buf;
+ iov[0].iov_len = buflen;
+
+ memset(&msg, 0, sizeof(struct msghdr));
+ msg.msg_name = &dsin;
+ msg.msg_namelen = sizeof(dsin);
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+
+ /* Assume we fill out a control msg; macros need to see buf ptr */
+ msg.msg_control = cmsgbuf;
+ msg.msg_controllen = 0;
+ memset(cmsgbuf, 0, MY_CMSG_SIZE);
+
+ /* IP_SENDSRCADDR and IP_SENDIF are mutually exclusive just now. */
+ if (srcaddr_s != NULL) {
+ msg.msg_controllen += CMSG_SPACE(sizeof(struct in_addr));
+ cmsgp = CMSG_FIRSTHDR(&msg);
+ cmsgp->cmsg_len = CMSG_LEN(sizeof(struct in_addr));
+ cmsgp->cmsg_level = IPPROTO_IP;
+ cmsgp->cmsg_type = IP_SENDSRCADDR;
+ srcaddrp = (struct in_addr *)CMSG_DATA(cmsgp);
+ srcaddrp->s_addr = inet_addr(srcaddr_s);
+ }
+
+ if (ifname != NULL) {
+#ifdef IP_SENDIF
+ msg.msg_controllen += CMSG_SPACE(sizeof(struct sockaddr_dl));
+ cmsgp = CMSG_FIRSTHDR(&msg);
+ cmsgp->cmsg_len = CMSG_LEN(sizeof(struct sockaddr_dl));
+ cmsgp->cmsg_level = IPPROTO_IP;
+ cmsgp->cmsg_type = IP_SENDIF;
+
+#ifdef DIAGNOSTIC
+ fprintf(stderr, "DEBUG: cmsgp->cmsg_len is %d\n",
+ cmsgp->cmsg_len);
+#endif
+
+ sdl = (struct sockaddr_dl *)CMSG_DATA(cmsgp);
+ memset(sdl, 0, sizeof(struct sockaddr_dl));
+ sdl->sdl_family = AF_LINK;
+ sdl->sdl_len = sizeof(struct sockaddr_dl);
+ sdl->sdl_index = if_nametoindex(ifname);
+
+#ifdef DIAGNOSTIC
+ fprintf(stderr, "DEBUG: sdl->sdl_family is %d\n",
+ sdl->sdl_family);
+ fprintf(stderr, "DEBUG: sdl->sdl_len is %d\n",
+ sdl->sdl_len);
+ fprintf(stderr, "DEBUG: sdl->sdl_index is %d\n",
+ sdl->sdl_index);
+#endif
+#else
+ fprintf(stderr, "WARNING: IP_SENDIF not supported, ignored.\n");
+#endif
+ }
+
+ if (msg.msg_controllen == 0)
+ msg.msg_control = NULL;
+
+ nbytes = sendmsg(s, &msg, (dontroute ? MSG_DONTROUTE : 0));
+ if (nbytes == -1) {
+ perror("sendmsg");
+ close(s);
+ exit(EXIT_FAILURE);
+ }
+
+ close(s);
+
+ exit(EXIT_SUCCESS);
+}
diff --git a/tools/regression/netinet/ipmulticast/Makefile b/tools/regression/netinet/ipmulticast/Makefile
new file mode 100644
index 0000000..a7cd29d
--- /dev/null
+++ b/tools/regression/netinet/ipmulticast/Makefile
@@ -0,0 +1,11 @@
+#
+# $FreeBSD$
+#
+
+PROG= ipmulticast
+SRCS= ipmulticast.c
+NO_MAN=
+
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/ipmulticast/ipmulticast.c b/tools/regression/netinet/ipmulticast/ipmulticast.c
new file mode 100644
index 0000000..af67fcf
--- /dev/null
+++ b/tools/regression/netinet/ipmulticast/ipmulticast.c
@@ -0,0 +1,787 @@
+/*-
+ * Copyright (c) 2007 Bruce M. Simpson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Regression test utility for RFC 3678 Advanced Multicast API in FreeBSD.
+ *
+ * TODO: Test the SSM paths.
+ * TODO: Support INET6. The code has been written to facilitate this later.
+ * TODO: Merge multicast socket option tests from ipsockopt.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <getopt.h>
+#include <libgen.h>
+#include <pwd.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysexits.h>
+#include <time.h>
+#include <unistd.h>
+
+#ifndef __SOCKUNION_DECLARED
+union sockunion {
+ struct sockaddr_storage ss;
+ struct sockaddr sa;
+ struct sockaddr_dl sdl;
+ struct sockaddr_in sin;
+#ifdef INET6
+ struct sockaddr_in6 sin6;
+#endif
+};
+typedef union sockunion sockunion_t;
+#define __SOCKUNION_DECLARED
+#endif /* __SOCKUNION_DECLARED */
+
+#define ADDRBUF_LEN 16
+#define DEFAULT_GROUP_STR "238.1.1.0"
+#define DEFAULT_IFNAME "lo0"
+#define DEFAULT_IFADDR_STR "127.0.0.1"
+#define DEFAULT_PORT 6698
+#define DEFAULT_TIMEOUT 0 /* don't wait for traffic */
+#define RXBUFSIZE 2048
+
+static sockunion_t basegroup;
+static const char *basegroup_str = NULL;
+static int dobindaddr = 0;
+static int dodebug = 1;
+static int doipv4 = 0;
+static int domiscopts = 0;
+static int dorandom = 0;
+static int doreuseport = 0;
+static int dossm = 0;
+static int dossf = 0;
+static int doverbose = 0;
+static sockunion_t ifaddr;
+static const char *ifaddr_str = NULL;
+static uint32_t ifindex = 0;
+static const char *ifname = NULL;
+struct in_addr *ipv4_sources = NULL;
+static jmp_buf jmpbuf;
+static size_t nmcastgroups = IP_MAX_MEMBERSHIPS;
+static size_t nmcastsources = 0;
+static uint16_t portno = DEFAULT_PORT;
+static char *progname = NULL;
+struct sockaddr_storage *ss_sources = NULL;
+static uint32_t timeout = 0;
+
+static int do_asm_ipv4(void);
+static int do_asm_pim(void);
+#ifdef notyet
+static int do_misc_opts(void);
+#endif
+static int do_ssf_ipv4(void);
+static int do_ssf_pim(void);
+static int do_ssm_ipv4(void);
+static int do_ssm_pim(void);
+static int open_and_bind_socket(sockunion_t *);
+static int recv_loop_with_match(int, sockunion_t *, sockunion_t *);
+static void signal_handler(int);
+static void usage(void);
+
+/*
+ * Test the IPv4 set/getipv4sourcefilter() libc API functions.
+ * Build a single socket.
+ * Join a source group.
+ * Repeatedly change the source filters via setipv4sourcefilter.
+ * Read it back with getipv4sourcefilter up to IP_MAX_SOURCES
+ * and check for inconsistency.
+ */
+static int
+do_ssf_ipv4(void)
+{
+
+ fprintf(stderr, "not yet implemented\n");
+ return (0);
+}
+
+/*
+ * Test the protocol-independent set/getsourcefilter() functions.
+ */
+static int
+do_ssf_pim(void)
+{
+
+ fprintf(stderr, "not yet implemented\n");
+ return (0);
+}
+
+/*
+ * Test the IPv4 ASM API.
+ * Repeatedly join, block sources, unblock and leave groups.
+ */
+static int
+do_asm_ipv4(void)
+{
+ int error;
+ char gaddrbuf[ADDRBUF_LEN];
+ int i;
+ sockunion_t laddr;
+ struct ip_mreq mreq;
+ struct ip_mreq_source mreqs;
+ in_addr_t ngroupbase;
+ char saddrbuf[ADDRBUF_LEN];
+ int sock;
+ sockunion_t tmpgroup;
+ sockunion_t tmpsource;
+
+ memset(&mreq, 0, sizeof(struct ip_mreq));
+ memset(&mreqs, 0, sizeof(struct ip_mreq_source));
+ memset(&laddr, 0, sizeof(sockunion_t));
+
+ if (dobindaddr) {
+ laddr = ifaddr;
+ } else {
+ laddr.sin.sin_family = AF_INET;
+ laddr.sin.sin_len = sizeof(struct sockaddr_in);
+ laddr.sin.sin_addr.s_addr = INADDR_ANY;
+ }
+ laddr.sin.sin_port = htons(portno);
+
+ tmpgroup = basegroup;
+ ngroupbase = ntohl(basegroup.sin.sin_addr.s_addr) + 1; /* XXX */
+ tmpgroup.sin.sin_addr.s_addr = htonl(ngroupbase);
+
+ sock = open_and_bind_socket(&laddr);
+ if (sock == -1)
+ return (EX_OSERR);
+
+ for (i = 0; i < (signed)nmcastgroups; i++) {
+ mreq.imr_multiaddr.s_addr = htonl((ngroupbase + i));
+ mreq.imr_interface = ifaddr.sin.sin_addr;
+ if (doverbose) {
+ inet_ntop(AF_INET, &mreq.imr_multiaddr, gaddrbuf,
+ sizeof(gaddrbuf));
+ fprintf(stderr, "IP_ADD_MEMBERSHIP %s %s\n",
+ gaddrbuf, inet_ntoa(mreq.imr_interface));
+ }
+ error = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP,
+ &mreq, sizeof(struct ip_mreq));
+ if (error < 0) {
+ warn("setsockopt IP_ADD_MEMBERSHIP");
+ close(sock);
+ return (EX_OSERR);
+ }
+ }
+
+ /*
+ * If no test sources auto-generated or specified on command line,
+ * skip source filter portion of ASM test.
+ */
+ if (nmcastsources == 0)
+ goto skipsources;
+
+ /*
+ * Begin blocking sources on the first group chosen.
+ */
+ for (i = 0; i < (signed)nmcastsources; i++) {
+ mreqs.imr_multiaddr = tmpgroup.sin.sin_addr;
+ mreqs.imr_interface = ifaddr.sin.sin_addr;
+ mreqs.imr_sourceaddr = ipv4_sources[i];
+ if (doverbose) {
+ inet_ntop(AF_INET, &mreqs.imr_multiaddr, gaddrbuf,
+ sizeof(gaddrbuf));
+ inet_ntop(AF_INET, &mreqs.imr_sourceaddr, saddrbuf,
+ sizeof(saddrbuf));
+ fprintf(stderr, "IP_BLOCK_SOURCE %s %s %s\n",
+ gaddrbuf, inet_ntoa(mreqs.imr_interface),
+ saddrbuf);
+ }
+ error = setsockopt(sock, IPPROTO_IP, IP_BLOCK_SOURCE, &mreqs,
+ sizeof(struct ip_mreq_source));
+ if (error < 0) {
+ warn("setsockopt IP_BLOCK_SOURCE");
+ close(sock);
+ return (EX_OSERR);
+ }
+ }
+
+ /*
+ * Choose the first group and source for a match.
+ * Enter the I/O loop.
+ */
+ memset(&tmpsource, 0, sizeof(sockunion_t));
+ tmpsource.sin.sin_family = AF_INET;
+ tmpsource.sin.sin_len = sizeof(struct sockaddr_in);
+ tmpsource.sin.sin_addr = ipv4_sources[0];
+
+ error = recv_loop_with_match(sock, &tmpgroup, &tmpsource);
+
+ /*
+ * Unblock sources.
+ */
+ for (i = nmcastsources-1; i >= 0; i--) {
+ mreqs.imr_multiaddr = tmpgroup.sin.sin_addr;
+ mreqs.imr_interface = ifaddr.sin.sin_addr;
+ mreqs.imr_sourceaddr = ipv4_sources[i];
+ if (doverbose) {
+ inet_ntop(AF_INET, &mreqs.imr_multiaddr, gaddrbuf,
+ sizeof(gaddrbuf));
+ inet_ntop(AF_INET, &mreqs.imr_sourceaddr, saddrbuf,
+ sizeof(saddrbuf));
+ fprintf(stderr, "IP_UNBLOCK_SOURCE %s %s %s\n",
+ gaddrbuf, inet_ntoa(mreqs.imr_interface),
+ saddrbuf);
+ }
+ error = setsockopt(sock, IPPROTO_IP, IP_UNBLOCK_SOURCE, &mreqs,
+ sizeof(struct ip_mreq_source));
+ if (error < 0) {
+ warn("setsockopt IP_UNBLOCK_SOURCE");
+ close(sock);
+ return (EX_OSERR);
+ }
+ }
+
+skipsources:
+ /*
+ * Leave groups.
+ */
+ for (i = nmcastgroups-1; i >= 0; i--) {
+ mreq.imr_multiaddr.s_addr = htonl((ngroupbase + i));
+ mreq.imr_interface = ifaddr.sin.sin_addr;
+ if (doverbose) {
+ inet_ntop(AF_INET, &mreq.imr_multiaddr, gaddrbuf,
+ sizeof(gaddrbuf));
+ fprintf(stderr, "IP_DROP_MEMBERSHIP %s %s\n",
+ gaddrbuf, inet_ntoa(mreq.imr_interface));
+ }
+ error = setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP,
+ &mreq, sizeof(struct ip_mreq));
+ if (error < 0) {
+ warn("setsockopt IP_DROP_MEMBERSHIP");
+ close(sock);
+ return (EX_OSERR);
+ }
+ }
+
+ return (0);
+}
+
+static int
+do_asm_pim(void)
+{
+
+ fprintf(stderr, "not yet implemented\n");
+ return (0);
+}
+
+#ifdef notyet
+/*
+ * Test misceallaneous IPv4 options.
+ */
+static int
+do_misc_opts(void)
+{
+ int sock;
+
+ sock = open_and_bind_socket(NULL);
+ if (sock == -1)
+ return (EX_OSERR);
+ test_ip_uchar(sock, socktypename, IP_MULTICAST_TTL,
+ "IP_MULTICAST_TTL", 1);
+ close(sock);
+
+ sock = open_and_bind_socket(NULL);
+ if (sock == -1)
+ return (EX_OSERR);
+ test_ip_boolean(sock, socktypename, IP_MULTICAST_LOOP,
+ "IP_MULTICAST_LOOP", 1, BOOLEAN_ANYONE);
+ close(sock);
+
+ return (0);
+}
+#endif
+
+/*
+ * Test the IPv4 SSM API.
+ */
+static int
+do_ssm_ipv4(void)
+{
+
+ fprintf(stderr, "not yet implemented\n");
+ return (0);
+}
+
+/*
+ * Test the protocol-independent SSM API with IPv4 addresses.
+ */
+static int
+do_ssm_pim(void)
+{
+
+ fprintf(stderr, "not yet implemented\n");
+ return (0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct addrinfo aih;
+ struct addrinfo *aip;
+ int ch;
+ int error;
+ int exitval;
+ size_t i;
+ struct in_addr *pina;
+ struct sockaddr_storage *pbss;
+
+ ifname = DEFAULT_IFNAME;
+ ifaddr_str = DEFAULT_IFADDR_STR;
+ basegroup_str = DEFAULT_GROUP_STR;
+ ifname = DEFAULT_IFNAME;
+ portno = DEFAULT_PORT;
+ basegroup.ss.ss_family = AF_UNSPEC;
+ ifaddr.ss.ss_family = AF_UNSPEC;
+
+ progname = basename(argv[0]);
+ while ((ch = getopt(argc, argv, "4bg:i:I:mM:p:rsS:tT:v")) != -1) {
+ switch (ch) {
+ case '4':
+ doipv4 = 1;
+ break;
+ case 'b':
+ dobindaddr = 1;
+ break;
+ case 'g':
+ basegroup_str = optarg;
+ break;
+ case 'i':
+ ifname = optarg;
+ break;
+ case 'I':
+ ifaddr_str = optarg;
+ break;
+ case 'm':
+ usage(); /* notyet */
+ /*NOTREACHED*/
+ domiscopts = 1;
+ break;
+ case 'M':
+ nmcastgroups = atoi(optarg);
+ break;
+ case 'p':
+ portno = atoi(optarg);
+ break;
+ case 'r':
+ doreuseport = 1;
+ break;
+ case 'S':
+ nmcastsources = atoi(optarg);
+ break;
+ case 's':
+ dossm = 1;
+ break;
+ case 't':
+ dossf = 1;
+ break;
+ case 'T':
+ timeout = atoi(optarg);
+ break;
+ case 'v':
+ doverbose = 1;
+ break;
+ default:
+ usage();
+ break;
+ /*NOTREACHED*/
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ memset(&aih, 0, sizeof(struct addrinfo));
+ aih.ai_flags = AI_NUMERICHOST | AI_PASSIVE;
+ aih.ai_family = PF_INET;
+ aih.ai_socktype = SOCK_DGRAM;
+ aih.ai_protocol = IPPROTO_UDP;
+
+ /*
+ * Fill out base group.
+ */
+ aip = NULL;
+ error = getaddrinfo(basegroup_str, NULL, &aih, &aip);
+ if (error != 0) {
+ fprintf(stderr, "%s: getaddrinfo: %s\n", progname,
+ gai_strerror(error));
+ exit(EX_USAGE);
+ }
+ memcpy(&basegroup, aip->ai_addr, aip->ai_addrlen);
+ if (dodebug) {
+ fprintf(stderr, "debug: gai thinks %s is %s\n",
+ basegroup_str, inet_ntoa(basegroup.sin.sin_addr));
+ }
+ freeaddrinfo(aip);
+
+ assert(basegroup.ss.ss_family == AF_INET);
+
+ /*
+ * If user specified interface as an address, and protocol
+ * specific APIs were selected, parse it.
+ * Otherwise, parse interface index from name if protocol
+ * independent APIs were selected (the default).
+ */
+ if (doipv4) {
+ if (ifaddr_str == NULL) {
+ warnx("required argument missing: ifaddr");
+ usage();
+ /* NOTREACHED */
+ }
+ aip = NULL;
+ error = getaddrinfo(ifaddr_str, NULL, &aih, &aip);
+ if (error != 0) {
+ fprintf(stderr, "%s: getaddrinfo: %s\n", progname,
+ gai_strerror(error));
+ exit(EX_USAGE);
+ }
+ memcpy(&ifaddr, aip->ai_addr, aip->ai_addrlen);
+ if (dodebug) {
+ fprintf(stderr, "debug: gai thinks %s is %s\n",
+ ifaddr_str, inet_ntoa(ifaddr.sin.sin_addr));
+ }
+ freeaddrinfo(aip);
+ }
+
+ if (!doipv4) {
+ if (ifname == NULL) {
+ warnx("required argument missing: ifname");
+ usage();
+ /* NOTREACHED */
+ }
+ ifindex = if_nametoindex(ifname);
+ if (ifindex == 0)
+ err(EX_USAGE, "if_nametoindex");
+ }
+
+ /*
+ * Introduce randomness into group base if specified.
+ */
+ if (dorandom) {
+ in_addr_t ngroupbase;
+
+ srandomdev();
+ ngroupbase = ntohl(basegroup.sin.sin_addr.s_addr);
+ ngroupbase |= ((random() % ((1 << 11) - 1)) << 16);
+ basegroup.sin.sin_addr.s_addr = htonl(ngroupbase);
+ }
+
+ if (argc > 0) {
+ nmcastsources = argc;
+ if (doipv4) {
+ ipv4_sources = calloc(nmcastsources,
+ sizeof(struct in_addr));
+ if (ipv4_sources == NULL) {
+ exitval = EX_OSERR;
+ goto out;
+ }
+ } else {
+ ss_sources = calloc(nmcastsources,
+ sizeof(struct sockaddr_storage));
+ if (ss_sources == NULL) {
+ exitval = EX_OSERR;
+ goto out;
+ }
+ }
+ }
+
+ /*
+ * Parse source list, if any were specified on the command line.
+ */
+ assert(aih.ai_family == PF_INET);
+ pbss = ss_sources;
+ pina = ipv4_sources;
+ for (i = 0; i < (size_t)argc; i++) {
+ aip = NULL;
+ error = getaddrinfo(argv[i], NULL, &aih, &aip);
+ if (error != 0) {
+ fprintf(stderr, "getaddrinfo: %s\n",
+ gai_strerror(error));
+ exitval = EX_USAGE;
+ goto out;
+ }
+ if (doipv4) {
+ struct sockaddr_in *sin =
+ (struct sockaddr_in *)aip->ai_addr;
+ *pina++ = sin->sin_addr;
+ } else {
+ memcpy(pbss++, aip->ai_addr, aip->ai_addrlen);
+ }
+ freeaddrinfo(aip);
+ }
+
+ /*
+ * Perform the regression tests which the user requested.
+ */
+#ifdef notyet
+ if (domiscopts) {
+ exitval = do_misc_opts();
+ if (exitval)
+ goto out;
+ }
+#endif
+ if (doipv4) {
+ /* IPv4 protocol specific API tests */
+ if (dossm) {
+ /* Source-specific multicast */
+ exitval = do_ssm_ipv4();
+ if (exitval)
+ goto out;
+ if (dossf) {
+ /* Do setipvsourcefilter() too */
+ exitval = do_ssf_ipv4();
+ }
+ } else {
+ /* Any-source multicast */
+ exitval = do_asm_ipv4();
+ }
+ } else {
+ /* Protocol independent API tests */
+ if (dossm) {
+ /* Source-specific multicast */
+ exitval = do_ssm_pim();
+ if (exitval)
+ goto out;
+ if (dossf) {
+ /* Do setsourcefilter() too */
+ exitval = do_ssf_pim();
+ }
+ } else {
+ /* Any-source multicast */
+ exitval = do_asm_pim();
+ }
+ }
+
+out:
+ if (ipv4_sources != NULL)
+ free(ipv4_sources);
+
+ if (ss_sources != NULL)
+ free(ss_sources);
+
+ exit(exitval);
+}
+
+static int
+open_and_bind_socket(sockunion_t *bsu)
+{
+ int error, optval, sock;
+
+ sock = -1;
+
+ sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ if (sock == -1) {
+ warn("socket");
+ return (-1);
+ }
+
+ if (doreuseport) {
+ optval = 1;
+ if (setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &optval,
+ sizeof(optval)) < 0) {
+ warn("setsockopt SO_REUSEPORT");
+ close(sock);
+ return (-1);
+ }
+ }
+
+ if (bsu != NULL) {
+ error = bind(sock, &bsu->sa, bsu->sa.sa_len);
+ if (error == -1) {
+ warn("bind");
+ close(sock);
+ return (-1);
+ }
+ }
+
+ return (sock);
+}
+
+/*
+ * Protocol-agnostic multicast I/O loop.
+ *
+ * Wait for 'timeout' seconds looking for traffic on group, so that manual
+ * or automated regression tests (possibly running on another host) have an
+ * opportunity to transmit within the group to test source filters.
+ *
+ * If the filter failed, this loop will report if we received traffic
+ * from the source we elected to monitor.
+ */
+static int
+recv_loop_with_match(int sock, sockunion_t *group, sockunion_t *source)
+{
+ int error;
+ sockunion_t from;
+ char groupname[NI_MAXHOST];
+ ssize_t len;
+ size_t npackets;
+ int jmpretval;
+ char rxbuf[RXBUFSIZE];
+ char sourcename[NI_MAXHOST];
+
+ assert(source->sa.sa_family == AF_INET);
+
+ /*
+ * Return immediately if we don't need to wait for traffic.
+ */
+ if (timeout == 0)
+ return (0);
+
+ error = getnameinfo(&group->sa, group->sa.sa_len, groupname,
+ NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
+ if (error) {
+ fprintf(stderr, "getnameinfo: %s\n", gai_strerror(error));
+ return (error);
+ }
+
+ error = getnameinfo(&source->sa, source->sa.sa_len, sourcename,
+ NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
+ if (error) {
+ fprintf(stderr, "getnameinfo: %s\n", gai_strerror(error));
+ return (error);
+ }
+
+ fprintf(stdout,
+ "Waiting %d seconds for inbound traffic on group %s\n"
+ "Expecting no traffic from blocked source: %s\n",
+ (int)timeout, groupname, sourcename);
+
+ signal(SIGINT, signal_handler);
+ signal(SIGALRM, signal_handler);
+
+ error = 0;
+ npackets = 0;
+ alarm(timeout);
+ while (0 == (jmpretval = setjmp(jmpbuf))) {
+ len = recvfrom(sock, rxbuf, RXBUFSIZE, 0, &from.sa,
+ (socklen_t *)&from.sa.sa_len);
+ if (dodebug) {
+ fprintf(stderr, "debug: packet received from %s\n",
+ inet_ntoa(from.sin.sin_addr));
+ }
+ if (source &&
+ source->sin.sin_addr.s_addr == from.sin.sin_addr.s_addr)
+ break;
+ npackets++;
+ }
+
+ if (doverbose) {
+ fprintf(stderr, "Number of datagrams received from "
+ "non-blocked sources: %d\n", (int)npackets);
+ }
+
+ switch (jmpretval) {
+ case SIGALRM: /* ok */
+ break;
+ case SIGINT: /* go bye bye */
+ fprintf(stderr, "interrupted\n");
+ error = 20;
+ break;
+ case 0: /* Broke out of loop; saw a bad source. */
+ fprintf(stderr, "FAIL: got packet from blocked source\n");
+ error = EX_IOERR;
+ break;
+ default:
+ warnx("recvfrom");
+ error = EX_OSERR;
+ break;
+ }
+
+ signal(SIGINT, SIG_DFL);
+ signal(SIGALRM, SIG_DFL);
+
+ return (error);
+}
+
+static void
+signal_handler(int signo)
+{
+
+ longjmp(jmpbuf, signo);
+}
+
+static void
+usage(void)
+{
+
+ fprintf(stderr, "\nIP multicast regression test utility\n");
+ fprintf(stderr,
+"usage: %s [-4] [-b] [-g groupaddr] [-i ifname] [-I ifaddr] [-m]\n"
+" [-M ngroups] [-p portno] [-r] [-R] [-s] [-S nsources] [-t] [-T timeout]\n"
+" [-v] [blockaddr ...]\n\n", progname);
+ fprintf(stderr, "-4: Use IPv4 API "
+ "(default: Use protocol-independent API)\n");
+ fprintf(stderr, "-b: bind listening socket to ifaddr "
+ "(default: INADDR_ANY)\n");
+ fprintf(stderr, "-g: Base IPv4 multicast group to join (default: %s)\n",
+ DEFAULT_GROUP_STR);
+ fprintf(stderr, "-i: interface for multicast joins (default: %s)\n",
+ DEFAULT_IFNAME);
+ fprintf(stderr, "-I: IPv4 address to join groups on, if using IPv4 "
+ "API\n (default: %s)\n", DEFAULT_IFADDR_STR);
+#ifdef notyet
+ fprintf(stderr, "-m: Test misc IPv4 multicast socket options "
+ "(default: off)\n");
+#endif
+ fprintf(stderr, "-M: Number of multicast groups to join "
+ "(default: %d)\n", (int)nmcastgroups);
+ fprintf(stderr, "-p: Set local and remote port (default: %d)\n",
+ DEFAULT_PORT);
+ fprintf(stderr, "-r: Set SO_REUSEPORT on (default: off)\n");
+ fprintf(stderr, "-R: Randomize groups/sources (default: off)\n");
+ fprintf(stderr, "-s: Test source-specific API "
+ "(default: test any-source API)\n");
+ fprintf(stderr, "-S: Number of multicast sources to generate if\n"
+ " none specified on command line (default: %d)\n",
+ (int)nmcastsources);
+ fprintf(stderr, "-t: Test get/setNsourcefilter() (default: off)\n");
+ fprintf(stderr, "-T: Timeout to wait for blocked traffic on first "
+ "group (default: %d)\n", DEFAULT_TIMEOUT);
+ fprintf(stderr, "-v: Be verbose (default: off)\n");
+ fprintf(stderr, "\nRemaining arguments are treated as a list of IPv4 "
+ "sources to filter.\n\n");
+
+ exit(EX_USAGE);
+}
diff --git a/tools/regression/netinet/ipsockopt/Makefile b/tools/regression/netinet/ipsockopt/Makefile
new file mode 100644
index 0000000..c49ee6c
--- /dev/null
+++ b/tools/regression/netinet/ipsockopt/Makefile
@@ -0,0 +1,8 @@
+#
+# $FreeBSD$
+#
+
+PROG= ipsockopt
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/ipsockopt/ipsockopt.c b/tools/regression/netinet/ipsockopt/ipsockopt.c
new file mode 100644
index 0000000..d03ddf6
--- /dev/null
+++ b/tools/regression/netinet/ipsockopt/ipsockopt.c
@@ -0,0 +1,943 @@
+/*-
+ * Copyright (c) 2004 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <arpa/inet.h>
+
+#include <err.h>
+#include <errno.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+static int dorandom = 0;
+static int nmcastgroups = IP_MAX_MEMBERSHIPS;
+static int verbose = 0;
+
+/*
+ * The test tool exercises IP-level socket options by interrogating the
+ * getsockopt()/setsockopt() APIs. It does not currently test that the
+ * intended semantics of each option are implemented (i.e., that setting IP
+ * options on the socket results in packets with the desired IP options in
+ * it).
+ */
+
+/*
+ * get_socket() is a wrapper function that returns a socket of the specified
+ * type, and created with or without restored root privilege (if running
+ * with a real uid of root and an effective uid of some other user). This
+ * us to test whether the same rights are granted using a socket with a
+ * privileged cached credential vs. a socket with a regular credential.
+ */
+#define PRIV_ASIS 0
+#define PRIV_GETROOT 1
+static int
+get_socket_unpriv(int type)
+{
+
+ return (socket(PF_INET, type, 0));
+}
+
+static int
+get_socket_priv(int type)
+{
+ uid_t olduid;
+ int sock;
+
+ if (getuid() != 0)
+ errx(-1, "get_sock_priv: running without real uid 0");
+
+ olduid = geteuid();
+ if (seteuid(0) < 0)
+ err(-1, "get_sock_priv: seteuid(0)");
+
+ sock = socket(PF_INET, type, 0);
+
+ if (seteuid(olduid) < 0)
+ err(-1, "get_sock_priv: seteuid(%d)", olduid);
+
+ return (sock);
+}
+
+static int
+get_socket(int type, int priv)
+{
+
+ if (priv)
+ return (get_socket_priv(type));
+ else
+ return (get_socket_unpriv(type));
+}
+
+/*
+ * Exercise the IP_OPTIONS socket option. Confirm the following properties:
+ *
+ * - That there is no initial set of options (length returned is 0).
+ * - That if we set a specific set of options, we can read it back.
+ * - That if we then reset the options, they go away.
+ *
+ * Use a UDP socket for this.
+ */
+static void
+test_ip_options(int sock, const char *socktypename)
+{
+ u_int32_t new_options, test_options[2];
+ socklen_t len;
+
+ /*
+ * Start off by confirming the default IP options on a socket are to
+ * have no options set.
+ */
+ len = sizeof(test_options);
+ if (getsockopt(sock, IPPROTO_IP, IP_OPTIONS, test_options, &len) < 0)
+ err(-1, "test_ip_options(%s): initial getsockopt()",
+ socktypename);
+
+ if (len != 0)
+ errx(-1, "test_ip_options(%s): initial getsockopt() returned "
+ "%d bytes", socktypename, len);
+
+#define TEST_MAGIC 0xc34e4212
+#define NEW_OPTIONS htonl(IPOPT_EOL | (IPOPT_NOP << 8) | (IPOPT_NOP << 16) \
+ | (IPOPT_NOP << 24))
+
+ /*
+ * Write some new options into the socket.
+ */
+ new_options = NEW_OPTIONS;
+ if (setsockopt(sock, IPPROTO_IP, IP_OPTIONS, &new_options,
+ sizeof(new_options)) < 0)
+ err(-1, "test_ip_options(%s): setsockopt(NOP|NOP|NOP|EOL)",
+ socktypename);
+
+ /*
+ * Store some random cruft in a local variable and retrieve the
+ * options to make sure they set. Note that we pass in an array
+ * of u_int32_t's so that if whatever ended up in the option was
+ * larger than what we put in, we find out about it here.
+ */
+ test_options[0] = TEST_MAGIC;
+ test_options[1] = TEST_MAGIC;
+ len = sizeof(test_options);
+ if (getsockopt(sock, IPPROTO_IP, IP_OPTIONS, test_options, &len) < 0)
+ err(-1, "test_ip_options(%s): getsockopt() after set",
+ socktypename);
+
+ /*
+ * Getting the right amount back is important.
+ */
+ if (len != sizeof(new_options))
+ errx(-1, "test_ip_options(%s): getsockopt() after set "
+ "returned %d bytes of data", socktypename, len);
+
+ /*
+ * One posible failure mode is that the call succeeds but neglects to
+ * copy out the data.
+ */
+ if (test_options[0] == TEST_MAGIC)
+ errx(-1, "test_ip_options(%s): getsockopt() after set didn't "
+ "return data", socktypename);
+
+ /*
+ * Make sure we get back what we wrote on.
+ */
+ if (new_options != test_options[0])
+ errx(-1, "test_ip_options(%s): getsockopt() after set "
+ "returned wrong options (%08x, %08x)", socktypename,
+ new_options, test_options[0]);
+
+ /*
+ * Now we reset the value to make sure clearing works.
+ */
+ if (setsockopt(sock, IPPROTO_IP, IP_OPTIONS, NULL, 0) < 0)
+ err(-1, "test_ip_options(%s): setsockopt() to reset",
+ socktypename);
+
+ /*
+ * Make sure it was really cleared.
+ */
+ test_options[0] = TEST_MAGIC;
+ test_options[1] = TEST_MAGIC;
+ len = sizeof(test_options);
+ if (getsockopt(sock, IPPROTO_IP, IP_OPTIONS, test_options, &len) < 0)
+ err(-1, "test_ip_options(%s): getsockopt() after reset",
+ socktypename);
+
+ if (len != 0)
+ errx(-1, "test_ip_options(%s): getsockopt() after reset "
+ "returned %d bytes", socktypename, len);
+}
+
+/*
+ * This test checks the behavior of the IP_HDRINCL socket option, which
+ * allows users with privilege to specify the full header on an IP raw
+ * socket. We test that the option can only be used with raw IP sockets, not
+ * with UDP or TCP sockets. We also confirm that the raw socket is only
+ * available to a privileged user (subject to the UID when called). We
+ * confirm that it defaults to off
+ *
+ * Unlike other tests, doesn't use caller-provided socket. Probably should
+ * be fixed.
+ */
+static void
+test_ip_hdrincl(void)
+{
+ int flag[2], sock;
+ socklen_t len;
+
+ /*
+ * Try to receive or set the IP_HDRINCL flag on a TCP socket.
+ */
+ sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock == -1)
+ err(-1, "test_ip_hdrincl(): socket(SOCK_STREAM)");
+
+ flag[0] = -1;
+ len = sizeof(flag[0]);
+ if (getsockopt(sock, IPPROTO_IP, IP_HDRINCL, flag, &len) == 0)
+ err(-1, "test_ip_hdrincl(): initial getsockopt(IP_HDRINCL)");
+
+ if (errno != ENOPROTOOPT)
+ errx(-1, "test_ip_hdrincl(): initial getsockopt(IP_HDRINC) "
+ "returned %d (%s) not ENOPROTOOPT", errno,
+ strerror(errno));
+
+ flag[0] = 1;
+ if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, flag, sizeof(flag[0]))
+ == 0)
+ err(-1,"test_ip_hdrincl(): setsockopt(IP_HDRINCL) on TCP "
+ "succeeded\n");
+
+ if (errno != ENOPROTOOPT)
+ errx(-1, "test_ip_hdrincl(): setsockopt(IP_HDRINCL) on TCP "
+ "returned %d (%s) not ENOPROTOOPT\n", errno,
+ strerror(errno));
+
+ close(sock);
+
+ /*
+ * Try to receive or set the IP_HDRINCL flag on a UDP socket.
+ */
+ sock = socket(PF_INET, SOCK_DGRAM, 0);
+ if (sock == -1)
+ err(-1, "test_ip_hdrincl(): socket(SOCK_DGRAM");
+
+ flag[0] = -1;
+ len = sizeof(flag[0]);
+ if (getsockopt(sock, IPPROTO_IP, IP_HDRINCL, flag, &len) == 0)
+ err(-1, "test_ip_hdrincl(): getsockopt(IP_HDRINCL) on UDP "
+ "succeeded\n");
+
+ if (errno != ENOPROTOOPT)
+ errx(-1, "test_ip_hdrincl(): getsockopt(IP_HDRINCL) on UDP "
+ "returned %d (%s) not ENOPROTOOPT\n", errno,
+ strerror(errno));
+
+ if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, flag, sizeof(flag[0]))
+ == 0)
+ err(-1, "test_ip_hdrincl(): setsockopt(IP_HDRINCL) on UDP "
+ "succeeded\n");
+
+ if (errno != ENOPROTOOPT)
+ errx(-1, "test_ip_hdrincl(): setsockopt(IP_HDRINCL) on UDP "
+ "returned %d (%s) not ENOPROTOOPT\n", errno,
+ strerror(errno));
+
+ close(sock);
+
+ /*
+ * Now try on a raw socket. Access ontrol should prevent non-root
+ * users from creating the raw socket, so check that here based on
+ * geteuid(). If we're non-root, we just return assuming the socket
+ * create fails since the remainder of the tests apply only on a raw
+ * socket.
+ */
+ sock = socket(PF_INET, SOCK_RAW, 0);
+ if (geteuid() != 0) {
+ if (sock != -1)
+ errx(-1, "test_ip_hdrincl: created raw socket as "
+ "uid %d", geteuid());
+ return;
+ }
+ if (sock == -1)
+ err(-1, "test_ip_hdrincl(): socket(PF_INET, SOCK_RAW)");
+
+ /*
+ * Make sure the initial value of the flag is 0 (disabled).
+ */
+ flag[0] = -1;
+ flag[1] = -1;
+ len = sizeof(flag);
+ if (getsockopt(sock, IPPROTO_IP, IP_HDRINCL, flag, &len) < 0)
+ err(-1, "test_ip_hdrincl(): getsockopt(IP_HDRINCL) on raw "
+ "socket");
+
+ if (len != sizeof(flag[0]))
+ errx(-1, "test_ip_hdrincl(): %d bytes returned on "
+ "initial get\n", len);
+
+ if (flag[0] != 0)
+ errx(-1, "test_ip_hdrincl(): initial flag value of %d\n",
+ flag[0]);
+
+ /*
+ * Enable the IP_HDRINCL flag.
+ */
+ flag[0] = 1;
+ if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, flag, sizeof(flag[0]))
+ < 0)
+ err(-1, "test_ip_hdrincl(): setsockopt(IP_HDRINCL, 1)");
+
+ /*
+ * Check that the IP_HDRINCL flag was set.
+ */
+ flag[0] = -1;
+ flag[1] = -1;
+ len = sizeof(flag);
+ if (getsockopt(sock, IPPROTO_IP, IP_HDRINCL, flag, &len) < 0)
+ err(-1, "test_ip_hdrincl(): getsockopt(IP_HDRINCL) after "
+ "set");
+
+ if (flag[0] == 0)
+ errx(-1, "test_ip_hdrincl(): getsockopt(IP_HDRINCL) "
+ "after set had flag of %d\n", flag[0]);
+
+#define HISTORICAL_INP_HDRINCL 8
+ if (flag[0] != HISTORICAL_INP_HDRINCL)
+ warnx("test_ip_hdrincl(): WARNING: getsockopt(IP_H"
+ "DRINCL) after set had non-historical value of %d\n",
+ flag[0]);
+
+ /*
+ * Reset the IP_HDRINCL flag to 0.
+ */
+ flag[0] = 0;
+ if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, flag, sizeof(flag[0]))
+ < 0)
+ err(-1, "test_ip_hdrincl(): setsockopt(IP_HDRINCL, 0)");
+
+ /*
+ * Check that the IP_HDRINCL flag was reset to 0.
+ */
+ flag[0] = -1;
+ flag[1] = -1;
+ len = sizeof(flag);
+ if (getsockopt(sock, IPPROTO_IP, IP_HDRINCL, flag, &len) < 0)
+ err(-1, "test_ip_hdrincl(): getsockopt(IP_HDRINCL) after "
+ "reset");
+
+ if (flag[0] != 0)
+ errx(-1, "test_ip_hdrincl(): getsockopt(IP_HDRINCL) "
+ "after set had flag of %d\n", flag[0]);
+
+ close(sock);
+}
+
+/*
+ * As with other non-int or larger sized socket options, the IP_TOS and
+ * IP_TTL fields in kernel is stored as an 8-bit value, reflecting the IP
+ * header fields, but useful I/O to the field occurs using 32-bit integers.
+ * The FreeBSD kernel will permit writes from variables at least an int in
+ * size (and ignore additional bytes), and will permit a read to buffers 1
+ * byte or larger (but depending on endianness, may truncate out useful
+ * values if the caller provides less room).
+ *
+ * Given the limitations of the API, use a UDP socket to confirm that the
+ * following are true:
+ *
+ * - We can read the IP_TOS/IP_TTL options.
+ * - The initial value of the TOS option is 0, TTL is 64.
+ * - That if we provide more than 32 bits of storage, we get back only 32
+ * bits of data.
+ * - When we set it to a non-zero value expressible with a u_char, we can
+ * read that value back.
+ * - When we reset it back to zero, we can read it as 0.
+ * - When we set it to a value >255, the value is truncated to something less
+ * than 255.
+ */
+static void
+test_ip_uchar(int sock, const char *socktypename, int option,
+ const char *optionname, int initial)
+{
+ int val[2];
+ socklen_t len;
+
+ /*
+ * Check that the initial value is 0, and that the size is one
+ * u_char;
+ */
+ val[0] = -1;
+ val[1] = -1;
+ len = sizeof(val);
+ if (getsockopt(sock, IPPROTO_IP, option, val, &len) < 0)
+ err(-1, "test_ip_uchar(%s, %s): initial getsockopt()",
+ socktypename, optionname);
+
+ if (len != sizeof(val[0]))
+ errx(-1, "test_ip_uchar(%s, %s): initial getsockopt() "
+ "returned %d bytes", socktypename, optionname, len);
+
+ if (val[0] == -1)
+ errx(-1, "test_ip_uchar(%s, %s): initial getsockopt() didn't "
+ "return data", socktypename, optionname);
+
+ if (val[0] != initial)
+ errx(-1, "test_ip_uchar(%s, %s): initial getsockopt() "
+ "returned value of %d, not %d", socktypename, optionname,
+ val[0], initial);
+
+ /*
+ * Set the field to a valid value.
+ */
+ val[0] = 128;
+ val[1] = -1;
+ if (setsockopt(sock, IPPROTO_IP, option, val, sizeof(val[0])) < 0)
+ err(-1, "test_ip_uchar(%s, %s): setsockopt(128)",
+ socktypename, optionname);
+
+ /*
+ * Check that when we read back the field, we get the same value.
+ */
+ val[0] = -1;
+ val[1] = -1;
+ len = sizeof(val);
+ if (getsockopt(sock, IPPROTO_IP, option, val, &len) < 0)
+ err(-1, "test_ip_uchar(%s, %s): getsockopt() after set to "
+ "128", socktypename, optionname);
+
+ if (len != sizeof(val[0]))
+ errx(-1, "test_ip_uchar(%s, %s): getsockopt() after set to "
+ "128 returned %d bytes", socktypename, optionname, len);
+
+ if (val[0] == -1)
+ errx(-1, "test_ip_uchar(%s, %s): getsockopt() after set to "
+ "128 didn't return data", socktypename, optionname);
+
+ if (val[0] != 128)
+ errx(-1, "test_ip_uchar(%s, %s): getsockopt() after set to "
+ "128 returned %d", socktypename, optionname, val[0]);
+
+ /*
+ * Reset the value to 0, check that it was reset.
+ */
+ val[0] = 0;
+ val[1] = 0;
+ if (setsockopt(sock, IPPROTO_IP, option, val, sizeof(val[0])) < 0)
+ err(-1, "test_ip_uchar(%s, %s): setsockopt() to reset from "
+ "128", socktypename, optionname);
+
+ if (len != sizeof(val[0]))
+ errx(-1, "test_ip_uchar(%s, %s): getsockopt() after reset "
+ "from 128 returned %d bytes", socktypename, optionname,
+ len);
+
+ if (val[0] == -1)
+ errx(-1, "test_ip_uchar(%s, %s): getsockopt() after reset "
+ "from 128 didn't return data", socktypename, optionname);
+
+ if (val[0] != 0)
+ errx(-1, "test_ip_uchar(%s, %s): getsockopt() after reset "
+ "from 128 returned %d", socktypename, optionname,
+ val[0]);
+
+ /*
+ * Set the value to something out of range and check that it comes
+ * back truncated, or that we get EINVAL back. Traditional u_char
+ * IP socket options truncate, but newer ones (such as multicast
+ * socket options) will return EINVAL.
+ */
+ val[0] = 32000;
+ val[1] = -1;
+ if (setsockopt(sock, IPPROTO_IP, option, val, sizeof(val[0])) < 0) {
+ /*
+ * EINVAL is a fine outcome, no need to run the truncation
+ * tests.
+ */
+ if (errno == EINVAL)
+ return;
+ err(-1, "test_ip_uchar(%s, %s): getsockopt(32000)",
+ socktypename, optionname);
+ }
+
+ val[0] = -1;
+ val[1] = -1;
+ len = sizeof(val);
+ if (getsockopt(sock, IPPROTO_IP, option, val, &len) < 0)
+ err(-1, "test_ip_uchar(%s, %s): getsockopt() after set to "
+ "32000", socktypename, optionname);
+
+ if (len != sizeof(val[0]))
+ errx(-1, "test_ip_uchar(%s, %s): getsockopt() after set to "
+ "32000 returned %d bytes", socktypename, optionname,
+ len);
+
+ if (val[0] == -1)
+ errx(-1, "test_ip_uchar(%s, %s): getsockopt() after set to "
+ "32000 didn't return data", socktypename, optionname);
+
+ if (val[0] == 32000)
+ errx(-1, "test_ip_uchar(%s, %s): getsockopt() after set to "
+ "32000 returned 32000: failed to truncate", socktypename,
+ optionname);
+}
+
+/*
+ * Generic test for a boolean socket option. Caller provides the option
+ * number, string name, expected default (initial) value, and whether or not
+ * the option is root-only. For each option, test:
+ *
+ * - That we can read the option.
+ * - That the initial value is as expected.
+ * - That we can modify the value.
+ * - That on modification, the new value can be read back.
+ * - That we can reset the value.
+ * - that on reset, the new value can be read back.
+ */
+#define BOOLEAN_ANYONE 1
+#define BOOLEAN_ROOTONLY 1
+static void
+test_ip_boolean(int sock, const char *socktypename, int option,
+ char *optionname, int initial, int rootonly)
+{
+ int newvalue, val[2];
+ socklen_t len;
+
+ /*
+ * The default for a boolean might be true or false. If it's false,
+ * we will try setting it to true (but using a non-1 value of true).
+ * If it's true, we'll set it to false.
+ */
+ if (initial == 0)
+ newvalue = 0xff;
+ else
+ newvalue = 0;
+
+ val[0] = -1;
+ val[1] = -1;
+ len = sizeof(val);
+ if (getsockopt(sock, IPPROTO_IP, option, val, &len) < 0)
+ err(-1, "test_ip_boolean: initial getsockopt()");
+
+ if (len != sizeof(val[0]))
+ errx(-1, "test_ip_boolean(%s, %s): initial getsockopt() "
+ "returned %d bytes", socktypename, optionname, len);
+
+ if (val[0] == -1)
+ errx(-1, "test_ip_boolean(%s, %s): initial getsockopt() "
+ "didn't return data", socktypename, optionname);
+
+ if (val[0] != initial)
+ errx(-1, "test_ip_boolean(%s, %s): initial getsockopt() "
+ "returned %d (expected %d)", socktypename, optionname,
+ val[0], initial);
+
+ /*
+ * Set the socket option to a new non-default value.
+ */
+ if (setsockopt(sock, IPPROTO_IP, option, &newvalue, sizeof(newvalue))
+ < 0)
+ err(-1, "test_ip_boolean(%s, %s): setsockopt() to %d",
+ socktypename, optionname, newvalue);
+
+ /*
+ * Read the value back and see if it is not the default (note: will
+ * not be what we set it to, as we set it to 0xff above).
+ */
+ val[0] = -1;
+ val[1] = -1;
+ len = sizeof(val);
+ if (getsockopt(sock, IPPROTO_IP, option, val, &len) < 0)
+ err(-1, "test_ip_boolean(%s, %s): getsockopt() after set to "
+ "%d", socktypename, optionname, newvalue);
+
+ if (len != sizeof(val[0]))
+ errx(-1, "test_ip_boolean(%s, %s): getsockopt() after set "
+ "to %d returned %d bytes", socktypename, optionname,
+ newvalue, len);
+
+ if (val[0] == -1)
+ errx(-1, "test_ip_boolean(%s, %s): getsockopt() after set "
+ "to %d didn't return data", socktypename, optionname,
+ newvalue);
+
+ /*
+ * If we set it to true, check for '1', otherwise '0.
+ */
+ if (val[0] != (newvalue ? 1 : 0))
+ errx(-1, "test_ip_boolean(%s, %s): getsockopt() after set "
+ "to %d returned %d", socktypename, optionname, newvalue,
+ val[0]);
+
+ /*
+ * Reset to initial value.
+ */
+ newvalue = initial;
+ if (setsockopt(sock, IPPROTO_IP, option, &newvalue, sizeof(newvalue))
+ < 0)
+ err(-1, "test_ip_boolean(%s, %s): setsockopt() to reset",
+ socktypename, optionname);
+
+ /*
+ * Check reset version.
+ */
+ val[0] = -1;
+ val[1] = -1;
+ len = sizeof(val);
+ if (getsockopt(sock, IPPROTO_IP, option, val, &len) < 0)
+ err(-1, "test_ip_boolean(%s, %s): getsockopt() after reset",
+ socktypename, optionname);
+
+ if (len != sizeof(val[0]))
+ errx(-1, "test_ip_boolean(%s, %s): getsockopt() after reset "
+ "returned %d bytes", socktypename, optionname, len);
+
+ if (val[0] == -1)
+ errx(-1, "test_ip_boolean(%s, %s): getsockopt() after reset "
+ "didn't return data", socktypename, optionname);
+
+ if (val[0] != newvalue)
+ errx(-1, "test_ip_boolean(%s, %s): getsockopt() after reset "
+ "returned %d", socktypename, optionname, newvalue);
+}
+
+/*
+ * Test the IP_ADD_MEMBERSHIP socket option, and the dynamic allocator
+ * for the imo_membership vector which now hangs off struct ip_moptions.
+ * We then call IP_DROP_MEMBERSHIP for each group so joined.
+ */
+static void
+test_ip_multicast_membership(int sock, const char *socktypename)
+{
+ char addrbuf[16];
+ struct ip_mreq mreq;
+ uint32_t basegroup;
+ uint16_t i;
+ int sotype;
+ socklen_t sotypelen;
+
+ sotypelen = sizeof(sotype);
+ if (getsockopt(sock, SOL_SOCKET, SO_TYPE, &sotype, &sotypelen) < 0)
+ err(-1, "test_ip_multicast_membership(%s): so_type getsockopt()",
+ socktypename);
+ /*
+ * Do not perform the test for SOCK_STREAM sockets, as this makes
+ * no sense.
+ */
+ if (sotype == SOCK_STREAM)
+ return;
+ /*
+ * The 224/8 range is administratively scoped and has special meaning,
+ * therefore it is not used for this test.
+ * If we were not told to be non-deterministic:
+ * Join multicast groups from 238.1.1.0 up to nmcastgroups.
+ * Otherwise, pick a multicast group ID in subnet 238/5 with 11 random
+ * bits in the middle, and join groups in linear order up to nmcastgroups.
+ */
+ if (dorandom) {
+ /* be non-deterministic (for interactive operation; a fuller test) */
+ srandomdev();
+ basegroup = 0xEE000000; /* 238.0.0.0 */
+ basegroup |= ((random() % ((1 << 11) - 1)) << 16); /* 11 bits */
+ } else {
+ /* be deterministic (for automated operation) */
+ basegroup = 0xEE010100; /* 238.1.1.0 */
+ }
+ /*
+ * Join the multicast group(s) on the default multicast interface;
+ * this usually maps to the interface to which the default
+ * route is pointing.
+ */
+ for (i = 1; i < nmcastgroups+1; i++) {
+ mreq.imr_multiaddr.s_addr = htonl((basegroup + i));
+ mreq.imr_interface.s_addr = INADDR_ANY;
+ inet_ntop(AF_INET, &mreq.imr_multiaddr, addrbuf, sizeof(addrbuf));
+ if (verbose)
+ fprintf(stderr, "IP_ADD_MEMBERSHIP %s INADDR_ANY\n", addrbuf);
+ if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq,
+ sizeof(mreq)) < 0) {
+ err(-1,
+"test_ip_multicast_membership(%d, %s): failed IP_ADD_MEMBERSHIP (%s, %s)",
+ sock, socktypename, addrbuf, "INADDR_ANY");
+ }
+ }
+ for (i = 1; i < nmcastgroups+1; i++) {
+ mreq.imr_multiaddr.s_addr = htonl((basegroup + i));
+ mreq.imr_interface.s_addr = INADDR_ANY;
+ inet_ntop(AF_INET, &mreq.imr_multiaddr, addrbuf, sizeof(addrbuf));
+ if (verbose)
+ fprintf(stderr, "IP_DROP_MEMBERSHIP %s INADDR_ANY\n", addrbuf);
+ if (setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq,
+ sizeof(mreq)) < 0) {
+ err(-1,
+"test_ip_multicast_membership(%d, %s): failed IP_DROP_MEMBERSHIP (%s, %s)",
+ sock, socktypename, addrbuf, "INADDR_ANY");
+ }
+ }
+}
+
+/*
+ * XXX: For now, nothing here.
+ */
+static void
+test_ip_multicast_if(int sock, const char *socktypename)
+{
+
+ /*
+ * It's probably worth trying INADDR_ANY and INADDR_LOOPBACK here
+ * to see what happens.
+ */
+}
+
+/*
+ * XXX: For now, nothing here.
+ */
+static void
+test_ip_multicast_vif(int sock, const char *socktypename)
+{
+
+ /*
+ * This requires some knowledge of the number of virtual interfaces,
+ * and what is valid.
+ */
+}
+
+static void
+testsuite(int priv)
+{
+ const char *socktypenameset[] = {"SOCK_DGRAM", "SOCK_STREAM",
+ "SOCK_RAW"};
+ int socktypeset[] = {SOCK_DGRAM, SOCK_STREAM, SOCK_RAW};
+ const char *socktypename;
+ int i, sock, socktype;
+
+ test_ip_hdrincl();
+
+ for (i = 0; i < sizeof(socktypeset)/sizeof(int); i++) {
+ socktype = socktypeset[i];
+ socktypename = socktypenameset[i];
+
+ /*
+ * If we can't acquire root privilege, we can't open raw
+ * sockets, so don't actually try.
+ */
+ if (getuid() != 0 && socktype == SOCK_RAW)
+ continue;
+ if (geteuid() != 0 && !priv && socktype == SOCK_RAW)
+ continue;
+
+ /*
+ * XXXRW: On 5.3, this seems not to work for SOCK_RAW.
+ */
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_uchar(IP_TOS)",
+ socktypename, priv);
+ test_ip_uchar(sock, socktypename, IP_TOS, "IP_TOS", 0);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s %d) for test_ip_uchar(IP_TTL)",
+ socktypename, priv);
+ test_ip_uchar(sock, socktypename, IP_TTL, "IP_TTL", 64);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_boolean"
+ "(IP_RECVOPTS)", socktypename, priv);
+ test_ip_boolean(sock, socktypename, IP_RECVOPTS,
+ "IP_RECVOPTS", 0, BOOLEAN_ANYONE);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_boolean"
+ "(IP_RECVRETOPTS)", socktypename, priv);
+ test_ip_boolean(sock, socktypename, IP_RECVRETOPTS,
+ "IP_RECVRETOPTS", 0, BOOLEAN_ANYONE);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_boolean"
+ "(IP_RECVDSTADDR)", socktypename, priv);
+ test_ip_boolean(sock, socktypename, IP_RECVDSTADDR,
+ "IP_RECVDSTADDR", 0, BOOLEAN_ANYONE);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_boolean"
+ "(IP_RECVTTL)", socktypename, priv);
+ test_ip_boolean(sock, socktypename, IP_RECVTTL, "IP_RECVTTL",
+ 0, BOOLEAN_ANYONE);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_boolean"
+ "(IP_RECVIF)", socktypename, priv);
+ test_ip_boolean(sock, socktypename, IP_RECVIF, "IP_RECVIF",
+ 0, BOOLEAN_ANYONE);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_boolean"
+ "(IP_FAITH)", socktypename, priv);
+ test_ip_boolean(sock, socktypename, IP_FAITH, "IP_FAITH", 0,
+ BOOLEAN_ANYONE);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_boolean"
+ "(IP_ONESBCAST)", socktypename, priv);
+ test_ip_boolean(sock, socktypename, IP_ONESBCAST,
+ "IP_ONESBCAST", 0, BOOLEAN_ANYONE);
+ close(sock);
+
+ /*
+ * Test the multicast TTL exactly as we would the regular
+ * TTL, only expect a different default.
+ */
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for IP_MULTICAST_TTL",
+ socktypename, priv);
+ test_ip_uchar(sock, socktypename, IP_MULTICAST_TTL,
+ "IP_MULTICAST_TTL", 1);
+ close(sock);
+
+ /*
+ * The multicast loopback flag can be tested using our
+ * boolean tester, but only because the FreeBSD API is a bit
+ * more flexible than earlir APIs and will accept an int as
+ * well as a u_char. Loopback is enabled by default.
+ */
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for IP_MULTICAST_LOOP",
+ socktypename, priv);
+ test_ip_boolean(sock, socktypename, IP_MULTICAST_LOOP,
+ "IP_MULTICAST_LOOP", 1, BOOLEAN_ANYONE);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_options",
+ socktypename, priv);
+ //test_ip_options(sock, socktypename);
+ close(sock);
+
+ sock = get_socket(socktype, priv);
+ if (sock == -1)
+ err(-1, "get_socket(%s, %d) for test_ip_options",
+ socktypename, priv);
+ test_ip_multicast_membership(sock, socktypename);
+ close(sock);
+
+ test_ip_multicast_if(0, NULL);
+ test_ip_multicast_vif(0, NULL);
+ /*
+ * XXX: Still need to test:
+ * IP_PORTRANGE
+ * IP_IPSEC_POLICY?
+ */
+ }
+}
+
+static void
+usage()
+{
+
+ fprintf(stderr, "usage: ipsockopt [-M ngroups] [-r] [-v]\n");
+ exit(EXIT_FAILURE);
+}
+
+/*
+ * Very simply exercise that we can get and set each option. If we're running
+ * as root, run it also as nobody. If not as root, complain about that.
+ */
+int
+main(int argc, char *argv[])
+{
+ int ch;
+
+ while ((ch = getopt(argc, argv, "M:rv")) != -1) {
+ switch (ch) {
+ case 'M':
+ nmcastgroups = atoi(optarg);
+ break;
+ case 'r':
+ dorandom = 1; /* introduce non-determinism */
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ default:
+ usage();
+ }
+ }
+
+ printf("1..1\n");
+
+ if (geteuid() != 0) {
+ warnx("Not running as root, can't run tests as root");
+ fprintf(stderr, "\n");
+ fprintf(stderr,
+ "Running tests with uid %d sock uid %d\n", geteuid(),
+ geteuid());
+ testsuite(PRIV_ASIS);
+ } else {
+ fprintf(stderr,
+ "Running tests with ruid %d euid %d sock uid 0\n",
+ getuid(), geteuid());
+ testsuite(PRIV_ASIS);
+ if (seteuid(65534) != 0)
+ err(-1, "seteuid(65534)");
+ fprintf(stderr,
+ "Running tests with ruid %d euid %d sock uid 65534\n",
+ getuid(), geteuid());
+ testsuite(PRIV_ASIS);
+ fprintf(stderr,
+ "Running tests with ruid %d euid %d sock uid 0\n",
+ getuid(), geteuid());
+ testsuite(PRIV_GETROOT);
+ }
+ printf("ok 1 - ipsockopt\n");
+ exit(0);
+}
diff --git a/tools/regression/netinet/ipsockopt/ipsockopt.t b/tools/regression/netinet/ipsockopt/ipsockopt.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/netinet/ipsockopt/ipsockopt.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/netinet/msocket/Makefile b/tools/regression/netinet/msocket/Makefile
new file mode 100644
index 0000000..17c5b80
--- /dev/null
+++ b/tools/regression/netinet/msocket/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= msocket
+NO_MAN=
+CFLAGS+= -Wall
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/msocket/msocket.c b/tools/regression/netinet/msocket/msocket.c
new file mode 100644
index 0000000..534e9f4
--- /dev/null
+++ b/tools/regression/netinet/msocket/msocket.c
@@ -0,0 +1,464 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <arpa/inet.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Regression test for multicast sockets and options:
+ *
+ * - Check the defaults for ttl, if, and loopback. Make sure they can be set
+ * and then read.
+ *
+ * - Check that adding and removing multicast addresses seems to work.
+ *
+ * - Send a test message over loop back multicast and make sure it arrives.
+ *
+ * NB:
+ *
+ * Would be nice to use BPF or if_tap to actually check packet contents and
+ * layout, make sure that the ttl is set right, etc.
+ *
+ * Would be nice if attempts to use multicast options on TCP sockets returned
+ * an error, as the docs suggest it might.
+ */
+
+#ifdef WARN_TCP
+#define WARN_SUCCESS 0x00000001 /* Set for TCP to warn on success. */
+#else
+#define WARN_SUCCESS 0x00000000
+#endif
+
+/*
+ * Multicast test address, picked arbitrarily. Will be used with the
+ * loopback interface.
+ */
+#define TEST_MADDR "224.100.100.100"
+
+/*
+ * Test that a given IP socket option (optname) has a default value of
+ * 'defaultv', that we can set it to 'modifiedv', and use 'fakev' as a dummy
+ * value that shouldn't be returned at any point during the tests. Perform
+ * the tests on the raw socket, tcp socket, and upd socket passed.
+ * 'optstring' is used in printing warnings and errors as needed.
+ */
+static void
+test_u_char(int optname, const char *optstring, u_char defaultv,
+ u_char modifiedv, u_char fakev, const char *socktype, int sock,
+ int flags)
+{
+ socklen_t socklen;
+ u_char uc;
+ int ret;
+
+ /*
+ * Check that we read back the expected default.
+ */
+ uc = fakev;
+ socklen = sizeof(uc);
+
+ ret = getsockopt(sock, IPPROTO_IP, optname, &uc, &socklen);
+ if (ret < 0)
+ err(-1, "FAIL: getsockopt(%s, IPPROTO_IP, %s)",
+ socktype, optstring);
+ if (ret == 0 && (flags & WARN_SUCCESS))
+ warnx("WARN: getsockopt(%s, IPPROTO_IP, %s) returned 0",
+ socktype, optstring);
+ if (uc != defaultv)
+ errx(-1, "FAIL: getsockopt(%s, IPPROTO_IP, %s) default is "
+ "%d not %d", socktype, optstring, uc, defaultv);
+
+ /*
+ * Set to a modifiedv value, read it back and make sure it got there.
+ */
+ uc = modifiedv;
+ ret = setsockopt(sock, IPPROTO_IP, optname, &uc, sizeof(uc));
+ if (ret == -1)
+ err(-1, "FAIL: setsockopt(%s, IPPROTO_IP, %s)",
+ socktype, optstring);
+ if (ret == 0 && (flags & WARN_SUCCESS))
+ warnx("WARN: setsockopt(%s, IPPROTO_IP, %s) returned 0",
+ socktype, optstring);
+
+ uc = fakev;
+ socklen = sizeof(uc);
+ ret = getsockopt(sock, IPPROTO_IP, optname, &uc, &socklen);
+ if (ret < 0)
+ err(-1, "FAIL: getsockopt(%s, IPPROTO_IP, %s)",
+ socktype, optstring);
+ if (ret == 0 && (flags & WARN_SUCCESS))
+ warnx("WARN: getsockopt(%s, IPPROTO_IP, %s) returned 0",
+ socktype, optstring);
+ if (uc != modifiedv)
+ errx(-1, "FAIL: getsockopt(%s, IPPROTO_IP, %s) set value is "
+ "%d not %d", socktype, optstring, uc, modifiedv);
+}
+
+/*
+ * test_in_addr() is like test_u_char(), only it runs on a struct in_addr
+ * (surprise).
+ */
+static void
+test_in_addr(int optname, const char *optstring, struct in_addr defaultv,
+ struct in_addr modifiedv, struct in_addr fakev, const char *socktype,
+ int sock, int flags)
+{
+ socklen_t socklen;
+ struct in_addr ia;
+ int ret;
+
+ /*
+ * Check that we read back the expected default.
+ */
+ ia = fakev;
+ socklen = sizeof(ia);
+
+ ret = getsockopt(sock, IPPROTO_IP, optname, &ia, &socklen);
+ if (ret < 0)
+ err(-1, "FAIL: getsockopt(%s, IPPROTO_IP, %s)",
+ socktype, optstring);
+ if (ret == 0 && (flags & WARN_SUCCESS))
+ warnx("WARN: getsockopt(%s, IPPROTO_IP, %s) returned 0",
+ socktype, optstring);
+ if (memcmp(&ia, &defaultv, sizeof(struct in_addr)))
+ errx(-1, "FAIL: getsockopt(%s, IPPROTO_IP, %s) default is "
+ "%s not %s", socktype, optstring, inet_ntoa(ia),
+ inet_ntoa(defaultv));
+
+ /*
+ * Set to a modifiedv value, read it back and make sure it got there.
+ */
+ ia = modifiedv;
+ ret = setsockopt(sock, IPPROTO_IP, optname, &ia, sizeof(ia));
+ if (ret == -1)
+ err(-1, "FAIL: setsockopt(%s, IPPROTO_IP, %s)",
+ socktype, optstring);
+ if (ret == 0 && (flags & WARN_SUCCESS))
+ warnx("WARN: setsockopt(%s, IPPROTO_IP, %s) returned 0",
+ socktype, optstring);
+
+ ia = fakev;
+ socklen = sizeof(ia);
+ ret = getsockopt(sock, IPPROTO_IP, optname, &ia, &socklen);
+ if (ret < 0)
+ err(-1, "FAIL: getsockopt(%s, IPPROTO_IP, %s)",
+ socktype, optstring);
+ if (ret == 0 && (flags & WARN_SUCCESS))
+ warnx("WARN: getsockopt(%s, IPPROTO_IP, %s) returned 0",
+ socktype, optstring);
+ if (memcmp(&ia, &modifiedv, sizeof(struct in_addr)))
+ errx(-1, "FAIL: getsockopt(%s, IPPROTO_IP, %s) set value is "
+ "%s not %s", socktype, optstring, inet_ntoa(ia),
+ inet_ntoa(modifiedv));
+}
+
+static void
+test_ttl(int raw_sock, int tcp_sock, int udp_sock)
+{
+
+ test_u_char(IP_MULTICAST_TTL, "IP_MULTICAST_TTL", 1, 2, 243,
+ "raw_sock", raw_sock, 0);
+ test_u_char(IP_MULTICAST_TTL, "IP_MULTICAST_TTL", 1, 2, 243,
+ "tcp_sock", tcp_sock, WARN_SUCCESS);
+ test_u_char(IP_MULTICAST_TTL, "IP_MULTICAST_TTL", 1, 2, 243,
+ "udp_sock", udp_sock, 0);
+}
+
+static void
+test_loop(int raw_sock, int tcp_sock, int udp_sock)
+{
+
+ test_u_char(IP_MULTICAST_LOOP, "IP_MULTICAST_LOOP", 1, 0, 243,
+ "raw_sock", raw_sock, 0);
+ test_u_char(IP_MULTICAST_LOOP, "IP_MULTICAST_LOOP", 1, 0, 243,
+ "tcp_sock", tcp_sock, WARN_SUCCESS);
+ test_u_char(IP_MULTICAST_LOOP, "IP_MULTICAST_LOOP", 1, 0, 243,
+ "udp_sock", udp_sock, 0);
+}
+
+static void
+test_if(int raw_sock, int tcp_sock, int udp_sock)
+{
+ struct in_addr defaultv, modifiedv, fakev;
+
+ defaultv.s_addr = inet_addr("0.0.0.0");
+
+ /* Should be valid on all hosts. */
+ modifiedv.s_addr = inet_addr("127.0.0.1");
+
+ /* Should not happen. */
+ fakev.s_addr = inet_addr("255.255.255.255");
+
+ test_in_addr(IP_MULTICAST_IF, "IP_MULTICAST_IF", defaultv, modifiedv,
+ fakev, "raw_sock", raw_sock, 0);
+ test_in_addr(IP_MULTICAST_IF, "IP_MULTICAST_IF", defaultv, modifiedv,
+ fakev, "tcp_sock", tcp_sock, WARN_SUCCESS);
+ test_in_addr(IP_MULTICAST_IF, "IP_MULTICAST_IF", defaultv, modifiedv,
+ fakev, "udp_sock", udp_sock, 0);
+}
+
+/*
+ * Add a multicast address to an interface. Warn if appropriate. No query
+ * interface so can't check if it's there directly; instead we have to try
+ * to add it a second time and make sure we get back EADDRINUSE.
+ */
+static void
+test_add_multi(int sock, const char *socktype, struct ip_mreq imr,
+ int flags)
+{
+ char buf[128];
+ int ret;
+
+ ret = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &imr,
+ sizeof(imr));
+ if (ret < 0) {
+ strlcpy(buf, inet_ntoa(imr.imr_multiaddr), 128);
+ err(-1, "FAIL: setsockopt(%s, IPPROTO_IP, IP_ADD_MEMBERSHIP "
+ "%s, %s)", socktype, buf, inet_ntoa(imr.imr_interface));
+ }
+ if (ret == 0 && (flags & WARN_SUCCESS)) {
+ strlcpy(buf, inet_ntoa(imr.imr_multiaddr), 128);
+ warnx("WARN: setsockopt(%s, IPPROTO_IP, IP_ADD_MEMBERSHIP "
+ "%s, %s) returned 0", socktype, buf,
+ inet_ntoa(imr.imr_interface));
+ }
+
+ /* Try to add a second time to make sure it got there. */
+ ret = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &imr,
+ sizeof(imr));
+ if (ret == 0) {
+ strlcpy(buf, inet_ntoa(imr.imr_multiaddr), 128);
+ err(-1, "FAIL: setsockopt(%s, IPPROTO_IP, IP_ADD_MEMBERSHIP "
+ "%s, %s) dup returned 0", socktype, buf,
+ inet_ntoa(imr.imr_interface));
+ }
+ if (ret < 0 && errno != EADDRINUSE) {
+ strlcpy(buf, inet_ntoa(imr.imr_multiaddr), 128);
+ err(-1, "FAIL: setsockopt(%s, IPPROTO_IP, IP_ADD_MEMBERSHIP "
+ "%s, %s)", socktype, buf, inet_ntoa(imr.imr_interface));
+ }
+}
+
+/*
+ * Drop a multicast address from an interface. Warn if appropriate. No
+ * query interface so can't check if it's gone directly; instead we have to
+ * try to drop it a second time and make sure we get back EADDRNOTAVAIL.
+ */
+static void
+test_drop_multi(int sock, const char *socktype, struct ip_mreq imr,
+ int flags)
+{
+ char buf[128];
+ int ret;
+
+ ret = setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, &imr,
+ sizeof(imr));
+ if (ret < 0) {
+ strlcpy(buf, inet_ntoa(imr.imr_multiaddr), 128);
+ err(-1, "FAIL: setsockopt(%s, IPPROTO_IP, IP_DROP_MEMBERSHIP "
+ "%s, %s)", socktype, buf, inet_ntoa(imr.imr_interface));
+ }
+ if (ret == 0 && (flags & WARN_SUCCESS)) {
+ strlcpy(buf, inet_ntoa(imr.imr_multiaddr), 128);
+ warnx("WARN: setsockopt(%s, IPPROTO_IP, IP_DROP_MEMBERSHIP "
+ "%s, %s) returned 0", socktype, buf,
+ inet_ntoa(imr.imr_interface));
+ }
+
+ /* Try a second time to make sure it's gone. */
+ ret = setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, &imr,
+ sizeof(imr));
+ if (ret == 0) {
+ strlcpy(buf, inet_ntoa(imr.imr_multiaddr), 128);
+ err(-1, "FAIL: setsockopt(%s, IPPROTO_IP, IP_DROP_MEMBERSHIP "
+ "%s, %s) returned 0", socktype, buf,
+ inet_ntoa(imr.imr_interface));
+ }
+ if (ret < 0 && errno != EADDRNOTAVAIL) {
+ strlcpy(buf, inet_ntoa(imr.imr_multiaddr), 128);
+ err(-1, "FAIL: setsockopt(%s, IPPROTO_IP, IP_DROP_MEMBERSHIP "
+ "%s, %s)", socktype, buf, inet_ntoa(imr.imr_interface));
+ }
+}
+
+/*
+ * Should really also test trying to add an invalid address, delete one
+ * that's not there, etc.
+ */
+static void
+test_addr(int raw_sock, int tcp_sock, int udp_sock)
+{
+ struct ip_mreq imr;
+
+ /* Arbitrary. */
+ imr.imr_multiaddr.s_addr = inet_addr(TEST_MADDR);
+
+ /* Localhost should be OK. */
+ imr.imr_interface.s_addr = inet_addr("127.0.0.1");
+
+ test_add_multi(raw_sock, "raw_sock", imr, 0);
+ test_drop_multi(raw_sock, "raw_sock", imr, 0);
+
+ test_add_multi(tcp_sock, "raw_sock", imr, WARN_SUCCESS);
+ test_drop_multi(tcp_sock, "raw_sock", imr, WARN_SUCCESS);
+
+ test_add_multi(udp_sock, "raw_sock", imr, 0);
+ test_drop_multi(udp_sock, "raw_sock", imr, 0);
+}
+
+/*
+ * Test an actual simple UDP message - send a single byte to an address we're
+ * subscribed to, and hope to get it back. We create a new UDP socket for
+ * this purpose because we will need to bind it.
+ */
+#define UDP_PORT 5012
+static void
+test_udp(void)
+{
+ struct sockaddr_in sin;
+ struct ip_mreq imr;
+ struct in_addr if_addr;
+ char message;
+ ssize_t len;
+ int sock;
+
+ sock = socket(PF_INET, SOCK_DGRAM, 0);
+ if (sock < 0)
+ err(-1, "FAIL: test_udp: socket(PF_INET, SOCK_DGRAM)");
+
+ if (fcntl(sock, F_SETFL, O_NONBLOCK) < 0)
+ err(-1, "FAIL: test_udp: fcntl(F_SETFL, O_NONBLOCK)");
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_port = htons(UDP_PORT);
+ sin.sin_addr.s_addr = inet_addr(TEST_MADDR);
+
+ if (bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(-1, "FAIL: test_udp: bind(udp_sock, 127.0.0.1:%d",
+ UDP_PORT);
+
+ /* Arbitrary. */
+ imr.imr_multiaddr.s_addr = inet_addr(TEST_MADDR);
+
+ /* Localhost should be OK. */
+ imr.imr_interface.s_addr = inet_addr("127.0.0.1");
+
+ /*
+ * Tell socket what interface to send on -- use localhost.
+ */
+ if_addr.s_addr = inet_addr("127.0.0.1");
+ if (setsockopt(sock, IPPROTO_IP, IP_MULTICAST_IF, &if_addr,
+ sizeof(if_addr)) < 0)
+ err(-1, "test_udp: setsockopt(IPPROTO_IP, IP_MULTICAST_IF)");
+
+ test_add_multi(sock, "udp_sock", imr, 0);
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_port = htons(UDP_PORT);
+ sin.sin_addr.s_addr = inet_addr(TEST_MADDR);
+
+ message = 'A';
+ len = sizeof(message);
+ len = sendto(sock, &message, len, 0, (struct sockaddr *)&sin,
+ sizeof(sin));
+ if (len < 0)
+ err(-1, "test_udp: sendto");
+
+ if (len != sizeof(message))
+ errx(-1, "test_udp: sendto: expected to send %d, instead %d",
+ sizeof(message), len);
+
+ message = 'B';
+ len = sizeof(sin);
+ len = recvfrom(sock, &message, sizeof(message), 0,
+ (struct sockaddr *)&sin, &len);
+ if (len < 0)
+ err(-1, "test_udp: recvfrom");
+
+ if (len != sizeof(message))
+ errx(-1, "test_udp: recvfrom: len %d != message len %d",
+ len, sizeof(message));
+
+ if (message != 'A')
+ errx(-1, "test_udp: recvfrom: expected 'A', got '%c'",
+ message);
+
+ test_drop_multi(sock, "udp_sock", imr, 0);
+
+ close(sock);
+}
+#undef UDP_PORT
+
+int
+main(int argc, char *argv[])
+{
+ int raw_sock, tcp_sock, udp_sock;
+
+ if (geteuid() != 0)
+ errx(-1, "FAIL: root privilege required");
+
+ raw_sock = socket(PF_INET, SOCK_RAW, 0);
+ if (raw_sock == -1)
+ err(-1, "FAIL: socket(PF_INET, SOCK_RAW)");
+
+ tcp_sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (raw_sock == -1)
+ err(-1, "FAIL: socket(PF_INET, SOCK_STREAM)");
+
+ udp_sock = socket(PF_INET, SOCK_DGRAM, 0);
+ if (raw_sock == -1)
+ err(-1, "FAIL: socket(PF_INET, SOCK_DGRAM)");
+
+ test_ttl(raw_sock, tcp_sock, udp_sock);
+ test_loop(raw_sock, tcp_sock, udp_sock);
+ test_if(raw_sock, tcp_sock, udp_sock);
+ test_addr(raw_sock, tcp_sock, udp_sock);
+
+ close(udp_sock);
+ close(tcp_sock);
+ close(raw_sock);
+
+ test_udp();
+
+ return (0);
+}
diff --git a/tools/regression/netinet/msocket_ifnet_remove/Makefile b/tools/regression/netinet/msocket_ifnet_remove/Makefile
new file mode 100644
index 0000000..07c3816
--- /dev/null
+++ b/tools/regression/netinet/msocket_ifnet_remove/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= msocket_ifnet_remove
+WARNS?= 3
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/msocket_ifnet_remove/msocket_ifnet_remove.c b/tools/regression/netinet/msocket_ifnet_remove/msocket_ifnet_remove.c
new file mode 100644
index 0000000..51788ef
--- /dev/null
+++ b/tools/regression/netinet/msocket_ifnet_remove/msocket_ifnet_remove.c
@@ -0,0 +1,244 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/ioctl.h>
+#include <sys/linker.h>
+#include <sys/socket.h>
+
+#include <net/if.h>
+
+#include <netinet/in.h>
+
+#include <arpa/inet.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Regression test to reproduce problems associated with the removal of a
+ * network interface being used by an active multicast socket. This proves
+ * to be somewhat complicated, as we need a multicast-capable synthetic
+ * network device that can be torn down on demand, in order that the test
+ * program can open a multicast socket, join a group on the interface, tear
+ * down the interface, and then close the multicast socket. We use the
+ * if_disc ("discard") synthetic interface for this purpose.
+ *
+ * Because potential solutions to this problem require separate handling for
+ * different IP socket types, we actually run the test twice: once for UDP
+ * sockets, and once for raw IP sockets.
+ */
+
+/*
+ * XXX: The following hopefully don't conflict with the local configuration.
+ */
+#define MULTICAST_IP "224.100.100.100"
+#define DISC_IP "192.0.2.100"
+#define DISC_MASK "255.255.255.0"
+#define DISC_IFNAME "disc"
+#define DISC_IFUNIT 100
+
+static int
+disc_setup(void)
+{
+ struct ifreq ifr;
+ int s;
+
+ if (kldload("if_disc") < 0) {
+ switch (errno) {
+ case EEXIST:
+ break;
+ default:
+ warn("disc_setup: kldload(if_disc)");
+ return (-1);
+ }
+ }
+
+ s = socket(PF_INET, SOCK_RAW, 0);
+ if (s < 0) {
+ warn("disc_setup: socket(PF_INET, SOCK_RAW, 0)");
+ return (-1);
+ }
+
+ bzero(&ifr, sizeof(ifr));
+ snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s%d", DISC_IFNAME,
+ DISC_IFUNIT);
+
+ if (ioctl(s, SIOCIFCREATE, &ifr) < 0) {
+ warn("disc_setup: ioctl(%s, SIOCIFCREATE)", ifr.ifr_name);
+ close(s);
+ return (-1);
+ }
+
+ close(s);
+ return (0);
+}
+
+static void
+disc_done(void)
+{
+ struct ifreq ifr;
+ int s;
+
+ s = socket(PF_INET, SOCK_RAW, 0);
+ if (s < 0) {
+ warn("disc_done: socket(PF_INET, SOCK_RAW, 0)");
+ return;
+ }
+
+ bzero(&ifr, sizeof(ifr));
+ snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s%d", DISC_IFNAME,
+ DISC_IFUNIT);
+
+ if (ioctl(s, SIOCIFDESTROY, &ifr) < 0)
+ warn("disc_done: ioctl(%s, SIOCIFDESTROY)", ifr.ifr_name);
+ close(s);
+}
+
+/*
+ * Configure an IP address and netmask on a network interface.
+ */
+static int
+ifconfig_inet(char *ifname, int ifunit, char *ip, char *netmask)
+{
+ struct sockaddr_in *sinp;
+ struct ifaliasreq ifra;
+ int s;
+
+ s = socket(PF_INET, SOCK_RAW, 0);
+ if (s < 0) {
+ warn("ifconfig_inet: socket(PF_INET, SOCK_RAW, 0)");
+ return (-1);
+ }
+
+ bzero(&ifra, sizeof(ifra));
+ snprintf(ifra.ifra_name, sizeof(ifra.ifra_name), "%s%d", ifname,
+ ifunit);
+
+ sinp = (struct sockaddr_in *)&ifra.ifra_addr;
+ sinp->sin_family = AF_INET;
+ sinp->sin_len = sizeof(ifra.ifra_addr);
+ sinp->sin_addr.s_addr = inet_addr(ip);
+
+ sinp = (struct sockaddr_in *)&ifra.ifra_mask;
+ sinp->sin_family = AF_INET;
+ sinp->sin_len = sizeof(ifra.ifra_addr);
+ sinp->sin_addr.s_addr = inet_addr(netmask);
+
+ if (ioctl(s, SIOCAIFADDR, &ifra) < 0) {
+ warn("ifconfig_inet: ioctl(%s%d, SIOCAIFADDR, %s)", ifname,
+ ifunit, ip);
+ close(s);
+ return (-1);
+ }
+
+ close(s);
+ return (0);
+}
+
+static int
+multicast_open(int *sockp, int type, const char *type_string)
+{
+ struct ip_mreq imr;
+ int sock;
+
+ sock = socket(PF_INET, type, 0);
+ if (sock < 0) {
+ warn("multicast_test: socket(PF_INET, %s, 0)", type_string);
+ return (-1);
+ }
+
+ bzero(&imr, sizeof(imr));
+ imr.imr_multiaddr.s_addr = inet_addr(MULTICAST_IP);
+ imr.imr_interface.s_addr = inet_addr(DISC_IP);
+
+ if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &imr,
+ sizeof(imr)) < 0) {
+ warn("multicast_test: setsockopt(IPPROTO_IP, "
+ "IP_ADD_MEMBERSHIP, {%s, %s})", MULTICAST_IP, DISC_IP);
+ close(sock);
+ return (-1);
+ }
+
+ *sockp = sock;
+ return (0);
+}
+
+static void
+multicast_close(int udp_socket)
+{
+
+ close(udp_socket);
+}
+
+static int
+test_sock_type(int type, const char *type_string)
+{
+ int sock;
+
+ if (disc_setup() < 0)
+ return (-1);
+
+ if (ifconfig_inet(DISC_IFNAME, DISC_IFUNIT, DISC_IP, DISC_MASK) < 0) {
+ disc_done();
+ return (-1);
+ }
+
+ if (multicast_open(&sock, type, type_string) < 0) {
+ disc_done();
+ return (-1);
+ }
+
+ /*
+ * Tear down the interface first, then close the multicast socket and
+ * see if we make it to the end of the function.
+ */
+ disc_done();
+ multicast_close(sock);
+
+ printf("test_sock_type(%s) passed\n", type_string);
+
+ return (0);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ if (test_sock_type(SOCK_RAW, "SOCK_RAW") < 0)
+ return (-1);
+
+ if (test_sock_type(SOCK_DGRAM, "SOCK_DGRAM") < 0)
+ return (-1);
+
+ return (0);
+}
diff --git a/tools/regression/netinet/rawconnect/Makefile b/tools/regression/netinet/rawconnect/Makefile
new file mode 100644
index 0000000..2ab6493
--- /dev/null
+++ b/tools/regression/netinet/rawconnect/Makefile
@@ -0,0 +1,8 @@
+#
+# $FreeBSD$
+#
+
+PROG= rawconnect
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/rawconnect/rawconnect.c b/tools/regression/netinet/rawconnect/rawconnect.c
new file mode 100644
index 0000000..95f8fc4
--- /dev/null
+++ b/tools/regression/netinet/rawconnect/rawconnect.c
@@ -0,0 +1,77 @@
+/*-
+ * Copyright (c) 2006 Maxim Konovalov
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Bug in IP code panics the system at close(2) on
+ * connected SOCK_RAW, IPPROTO_IP socket.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+#include <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <strings.h>
+#include <unistd.h>
+
+static void
+usage(void)
+{
+
+ fprintf(stderr, "rawconnect: no arguments\n");
+ exit(1);
+}
+
+int
+main(int argc, __unused char *argv[])
+{
+ struct sockaddr_in sin;
+ int sock;
+
+ if (argc != 1)
+ usage();
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = INADDR_LOOPBACK;
+ sin.sin_port = htons(65534);
+
+ sock = socket(PF_INET, SOCK_RAW, IPPROTO_IP);
+ if (sock == -1)
+ err(1, "socket");
+
+ if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1)
+ err(1, "connect");
+
+ close(sock);
+
+ return (0);
+}
diff --git a/tools/regression/netinet/rawconnect/rawconnect.t b/tools/regression/netinet/rawconnect/rawconnect.t
new file mode 100644
index 0000000..03f249d
--- /dev/null
+++ b/tools/regression/netinet/rawconnect/rawconnect.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+echo 1..1
+
+comment="rawconnect # open raw ip socket, connect it and then close"
+
+uid=`id -u`
+
+if [ $uid -ne 0 ]; then
+ echo "ok 1 - rawconnect # skipped: you need to be root to run this test"
+elif ./$executable; then
+ echo "ok 1 - $comment"
+else
+ echo "not ok 1 - $comment"
+fi
diff --git a/tools/regression/netinet/tcpconnect/Makefile b/tools/regression/netinet/tcpconnect/Makefile
new file mode 100644
index 0000000..3456ff5
--- /dev/null
+++ b/tools/regression/netinet/tcpconnect/Makefile
@@ -0,0 +1,8 @@
+#
+# $FreeBSD$
+#
+
+PROG= tcpconnect
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/tcpconnect/tcpconnect.c b/tools/regression/netinet/tcpconnect/tcpconnect.c
new file mode 100644
index 0000000..5037a98
--- /dev/null
+++ b/tools/regression/netinet/tcpconnect/tcpconnect.c
@@ -0,0 +1,150 @@
+/*-
+ * Copyright (c) 2004-2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <arpa/inet.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+static void
+usage(void)
+{
+
+ fprintf(stderr, "tcpconnect server port\n");
+ fprintf(stderr, "tcpconnect client ip port count\n");
+ exit(-1);
+}
+
+static void
+tcpconnect_server(int argc, char *argv[])
+{
+ int listen_sock, accept_sock;
+ struct sockaddr_in sin;
+ char *dummy;
+ long port;
+
+ if (argc != 1)
+ usage();
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_ANY);
+
+ port = strtoul(argv[0], &dummy, 10);
+ if (port < 1 || port > 65535 || *dummy != '\0')
+ usage();
+ sin.sin_port = htons(port);
+
+ listen_sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (listen_sock == -1)
+ errx(-1, "socket: %s", strerror(errno));
+
+ if (bind(listen_sock, (struct sockaddr *)&sin, sizeof(sin)) == -1)
+ errx(-1, "bind: %s", strerror(errno));
+
+ if (listen(listen_sock, -1) == -1)
+ errx(-1, "listen: %s", strerror(errno));
+
+ while (1) {
+ accept_sock = accept(listen_sock, NULL, NULL);
+ close(accept_sock);
+ }
+}
+
+static void
+tcpconnect_client(int argc, char *argv[])
+{
+ struct sockaddr_in sin;
+ long count, i, port;
+ char *dummy;
+ int sock;
+
+ if (argc != 3)
+ usage();
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ if (inet_aton(argv[0], &sin.sin_addr) == 0)
+ errx(-1, "listen: %x", strerror(errno));
+
+ port = strtoul(argv[1], &dummy, 10);
+ if (port < 1 || port > 65535 || *dummy != '\0')
+ usage();
+ sin.sin_port = htons(port);
+
+ count = strtoul(argv[2], &dummy, 10);
+ if (count < 1 || count > 100000 || *dummy != '\0')
+ usage();
+
+ for (i = 0; i < count; i++) {
+ sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock == -1)
+ errx(-1, "socket: %s", strerror(errno));
+
+#ifdef NONBLOCK
+ if (fcntl(sock, F_SETFL, O_NONBLOCK) != 0)
+ errx(-1, "fcntl(F_SETFL): %s", strerror(errno));
+
+ if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1
+ && errno != EINPROGRESS)
+ errx(-1, "connect: %s", strerror(errno));
+#else
+ if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1)
+ errx(-1, "connect: %s", strerror(errno));
+#endif
+
+ close(sock);
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ if (argc < 2)
+ usage();
+
+ if (strcmp(argv[1], "server") == 0)
+ tcpconnect_server(argc - 2, argv + 2);
+ else if (strcmp(argv[1], "client") == 0)
+ tcpconnect_client(argc - 2, argv + 2);
+ else
+ usage();
+
+ exit(0);
+}
diff --git a/tools/regression/netinet/tcpdrop/Makefile b/tools/regression/netinet/tcpdrop/Makefile
new file mode 100644
index 0000000..1707dad
--- /dev/null
+++ b/tools/regression/netinet/tcpdrop/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= tcpdrop
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/tcpdrop/tcpdrop.c b/tools/regression/netinet/tcpdrop/tcpdrop.c
new file mode 100644
index 0000000..bf78d55
--- /dev/null
+++ b/tools/regression/netinet/tcpdrop/tcpdrop.c
@@ -0,0 +1,248 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * TCP regression test for the tcpdrop sysctl; build a loopback TCP
+ * connection, drop it, and make sure both endpoints return that the
+ * connection has been reset.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+
+#include <netinet/in.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define TCP_PORT 9001
+
+static int
+tcp_drop(struct sockaddr_in *sin_local, struct sockaddr_in *sin_remote)
+{
+ struct sockaddr_storage addrs[2];
+
+ /*
+ * Sysctl accepts an array of two sockaddr's, the first being the
+ * 'foreign' sockaddr, the second being the 'local' sockaddr.
+ */
+
+ bcopy(sin_remote, &addrs[0], sizeof(*sin_remote));
+ bcopy(sin_local, &addrs[1], sizeof(*sin_local));
+
+ return (sysctlbyname("net.inet.tcp.drop", NULL, 0, addrs,
+ sizeof(addrs)));
+}
+
+static void
+tcp_server(pid_t partner)
+{
+ int error, listen_fd, accept_fd;
+ struct sockaddr_in sin;
+ ssize_t len;
+ char ch;
+
+ listen_fd = socket(PF_INET, SOCK_STREAM, 0);
+ if (listen_fd < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: socket");
+ }
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_family = AF_INET;
+ sin.sin_len = sizeof(sin);
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(TCP_PORT);
+
+ if (bind(listen_fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: bind");
+ }
+
+ if (listen(listen_fd, -1) < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: listen");
+ }
+
+ accept_fd = accept(listen_fd, NULL, NULL);
+ if (accept_fd < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: accept");
+ }
+
+ /*
+ * Send one byte, make sure that worked, wait for the drop, and try
+ * sending another. By sending small amounts, we avoid blocking
+ * waiting on the remote buffer to be drained.
+ */
+ ch = 'A';
+ len = send(accept_fd, &ch, sizeof(ch), MSG_NOSIGNAL);
+ if (len < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: send (1)");
+ }
+ if (len != sizeof(ch)) {
+ (void)kill(partner, SIGTERM);
+ errx(-1, "tcp_server: send (1) len");
+ }
+
+ sleep (10);
+
+ ch = 'A';
+ len = send(accept_fd, &ch, sizeof(ch), MSG_NOSIGNAL);
+ if (len >= 0) {
+ (void)kill(partner, SIGTERM);
+ errx(-1, "tcp_server: send (2): success");
+ } else if (errno != EPIPE) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: send (2)");
+ }
+
+ close(accept_fd);
+ close(listen_fd);
+}
+
+static void
+tcp_client(pid_t partner)
+{
+ struct sockaddr_in sin, sin_local;
+ int error, sock;
+ socklen_t slen;
+ ssize_t len;
+ char ch;
+
+ sleep(1);
+
+ sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "socket");
+ }
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_family = AF_INET;
+ sin.sin_len = sizeof(sin);
+ sin.sin_addr.s_addr = ntohl(INADDR_LOOPBACK);
+ sin.sin_port = htons(TCP_PORT);
+
+ if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "connect");
+ }
+
+ slen = sizeof(sin_local);
+ if (getsockname(sock, (struct sockaddr *)&sin_local, &slen) < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "getsockname");
+ }
+
+ /*
+ * Send one byte, make sure that worked, wait for the drop, and try
+ * sending another. By sending small amounts, we avoid blocking
+ * waiting on the remote buffer to be drained.
+ */
+ ch = 'A';
+ len = send(sock, &ch, sizeof(ch), MSG_NOSIGNAL);
+ if (len < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_client: send (1)");
+ }
+ if (len != sizeof(ch)) {
+ (void)kill(partner, SIGTERM);
+ errx(-1, "tcp_client: send (1) len");
+ }
+
+ sleep(5);
+ if (tcp_drop(&sin_local, &sin) < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_client: tcp_drop");
+ }
+ sleep(5);
+
+ ch = 'A';
+ len = send(sock, &ch, sizeof(ch), MSG_NOSIGNAL);
+ if (len >= 0) {
+ (void)kill(partner, SIGTERM);
+ errx(-1, "tcp_client: send (2): success");
+ } else if (errno != EPIPE) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_client: send (2)");
+ }
+ close(sock);
+}
+
+int
+main(int argc, char *argv[])
+{
+ pid_t child_pid, parent_pid;
+
+ if (signal(SIGCHLD, SIG_IGN) == SIG_ERR)
+ err(-1, "signal");
+
+ parent_pid = getpid();
+ child_pid = fork();
+ if (child_pid < 0)
+ err(-1, "fork");
+ if (child_pid == 0) {
+ child_pid = getpid();
+ tcp_server(parent_pid);
+ } else
+ tcp_client(child_pid);
+
+ return (0);
+}
diff --git a/tools/regression/netinet/tcpfullwindowrst/Makefile b/tools/regression/netinet/tcpfullwindowrst/Makefile
new file mode 100644
index 0000000..b24f940
--- /dev/null
+++ b/tools/regression/netinet/tcpfullwindowrst/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+PROG= tcpfullwindowrsttest
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrst.t b/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrst.t
new file mode 100644
index 0000000..49acbcc
--- /dev/null
+++ b/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrst.t
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# $FreeBSD$
+
+make tcpfullwindowrsttest 2>&1 > /dev/null
+
+./tcpfullwindowrsttest
diff --git a/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrsttest.c b/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrsttest.c
new file mode 100644
index 0000000..ac86b9e
--- /dev/null
+++ b/tools/regression/netinet/tcpfullwindowrst/tcpfullwindowrsttest.c
@@ -0,0 +1,131 @@
+/*
+Copyright 2004 Michiel Boland. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+$FreeBSD$
+
+*/
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <fcntl.h>
+#include <poll.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+
+/*
+ * The following code sets up two connected TCP sockets that send data to each
+ * other until the window is closed. Then one of the sockets is closed, which
+ * will generate a RST once the TCP at the other socket does a window probe.
+ *
+ * All versions of FreeBSD prior to 11/26/2004 will ignore this RST into a 0
+ * window, causing the connection (and application) to hang indefinitely.
+ * On patched versions of FreeBSD (and other operating systems), the RST
+ * will be accepted and the program will exit in a few seconds.
+ */
+
+/*
+ * If the alarm fired then we've hung and the test failed.
+ */
+void
+do_alrm(int s)
+{
+ printf("not ok 1 - tcpfullwindowrst\n");
+ exit(0);
+}
+
+int
+main(void)
+{
+ int o, s, t, u, do_t, do_u;
+ struct pollfd pfd[2];
+ struct sockaddr_in sa;
+ char buf[4096];
+
+ printf("1..1\n");
+ signal(SIGALRM, do_alrm);
+ alarm(20);
+
+ s = socket(AF_INET, SOCK_STREAM, 0);
+ if (s == -1)
+ return 1;
+ o = 1;
+ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &o, sizeof o);
+ memset(&sa, 0, sizeof sa);
+ sa.sin_family = AF_INET;
+ sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sa.sin_port = htons(3737);
+ if (bind(s, (struct sockaddr *) &sa, sizeof sa) == -1)
+ return 1;
+ if (listen(s, 1) == -1)
+ return 1;
+ t = socket(AF_INET, SOCK_STREAM, 0);
+ if (t == -1)
+ return 1;
+ if (connect(t, (struct sockaddr *) &sa, sizeof sa) == -1)
+ return 1;
+ u = accept(s, 0, 0);
+ if (u == -1)
+ return 1;
+ close(s);
+ fcntl(t, F_SETFL, fcntl(t, F_GETFL) | O_NONBLOCK);
+ fcntl(u, F_SETFL, fcntl(t, F_GETFL) | O_NONBLOCK);
+ do_t = 1;
+ do_u = 1;
+ pfd[0].fd = t;
+ pfd[0].events = POLLOUT;
+ pfd[1].fd = u;
+ pfd[1].events = POLLOUT;
+ while (do_t || do_u) {
+ if (poll(pfd, 2, 1000) == 0) {
+ if (do_t) {
+ close(t);
+ pfd[0].fd = -1;
+ do_t = 0;
+ }
+ continue;
+ }
+ if (pfd[0].revents & POLLOUT) {
+ if (write(t, buf, sizeof buf) == -1) {
+ close(t);
+ pfd[0].fd = -1;
+ do_t = 0;
+ }
+ }
+ if (pfd[1].revents & POLLOUT) {
+ if (write(u, buf, sizeof buf) == -1) {
+ close(u);
+ pfd[1].fd = -1;
+ do_u = 0;
+ }
+ }
+ }
+
+ printf("ok 1 - tcpfullwindowrst\n");
+ return 0;
+}
diff --git a/tools/regression/netinet/tcpsockclosebeforeaccept/Makefile b/tools/regression/netinet/tcpsockclosebeforeaccept/Makefile
new file mode 100644
index 0000000..2ac338a
--- /dev/null
+++ b/tools/regression/netinet/tcpsockclosebeforeaccept/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= tcpsockclosebeforeaccept
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/tcpsockclosebeforeaccept/tcpsockclosebeforeaccept.c b/tools/regression/netinet/tcpsockclosebeforeaccept/tcpsockclosebeforeaccept.c
new file mode 100644
index 0000000..b7ef765
--- /dev/null
+++ b/tools/regression/netinet/tcpsockclosebeforeaccept/tcpsockclosebeforeaccept.c
@@ -0,0 +1,201 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * TCP regression test which opens a loopback TCP session, and closes it
+ * before the remote endpoint (server) can accept it. Run the test twice,
+ * once using an explicit close() from the client, a second using a tcp drop.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+
+#include <netinet/in.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define TCP_PORT 9005
+
+static int
+tcp_drop(struct sockaddr_in *sin_local, struct sockaddr_in *sin_remote)
+{
+ struct sockaddr_storage addrs[2];
+
+ /*
+ * Sysctl accepts an array of two sockaddr's, the first being the
+ * 'foreign' sockaddr, the second being the 'local' sockaddr.
+ */
+
+ bcopy(sin_remote, &addrs[0], sizeof(*sin_remote));
+ bcopy(sin_local, &addrs[1], sizeof(*sin_local));
+
+ return (sysctlbyname("net.inet.tcp.drop", NULL, 0, addrs,
+ sizeof(addrs)));
+}
+
+
+static void
+tcp_server(pid_t partner)
+{
+ int error, listen_fd, accept_fd;
+ struct sockaddr_in sin;
+
+ listen_fd = socket(PF_INET, SOCK_STREAM, 0);
+ if (listen_fd < 0) {
+ error = errno;
+ (void)kill(partner, SIGKILL);
+ errno = error;
+ err(-1, "tcp_server: socket");
+ }
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_family = AF_INET;
+ sin.sin_len = sizeof(sin);
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(TCP_PORT);
+
+ if (bind(listen_fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ error = errno;
+ (void)kill(partner, SIGKILL);
+ errno = error;
+ err(-1, "tcp_server: bind");
+ }
+
+ if (listen(listen_fd, -1) < 0) {
+ error = errno;
+ (void)kill(partner, SIGKILL);
+ errno = error;
+ err(-1, "tcp_server: listen");
+ }
+
+ sleep(10);
+
+ accept_fd = accept(listen_fd, NULL, NULL);
+ if (accept_fd < 0) {
+ error = errno;
+ (void)kill(partner, SIGKILL);
+ errno = error;
+ err(-1, "tcp_server: accept");
+ }
+ close(accept_fd);
+ close(listen_fd);
+}
+
+static void
+tcp_client(pid_t partner, int dropflag)
+{
+ struct sockaddr_in sin, sin_local;
+ int error, sock;
+ socklen_t slen;
+
+ sleep(1);
+
+ sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock < 0) {
+ error = errno;
+ (void)kill(partner, SIGKILL);
+ errno = error;
+ err(-1, "socket");
+ }
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_family = AF_INET;
+ sin.sin_len = sizeof(sin);
+ sin.sin_addr.s_addr = ntohl(INADDR_LOOPBACK);
+ sin.sin_port = htons(TCP_PORT);
+
+ if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ error = errno;
+ (void)kill(partner, SIGKILL);
+ errno = error;
+ err(-1, "connect");
+ }
+
+ slen = sizeof(sin_local);
+ if (getsockname(sock, (struct sockaddr *)&sin_local, &slen) < 0) {
+ error = errno;
+ (void)kill(partner, SIGKILL);
+ errno = error;
+ err(-1, "getsockname");
+ }
+
+ if (dropflag) {
+ if (tcp_drop(&sin_local, &sin) < 0) {
+ error = errno;
+ (void)kill(partner, SIGKILL);
+ errno = error;
+ err(-1, "tcp_drop");
+ }
+ sleep(2);
+ }
+ close(sock);
+}
+
+int
+main(int argc, char *argv[])
+{
+ pid_t child_pid, parent_pid;
+
+ if (signal(SIGCHLD, SIG_IGN) == SIG_ERR)
+ err(-1, "signal");
+
+ parent_pid = getpid();
+ child_pid = fork();
+ if (child_pid < 0)
+ err(-1, "fork");
+ if (child_pid == 0) {
+ child_pid = getpid();
+ tcp_server(parent_pid);
+ return (0);
+ } else
+ tcp_client(child_pid, 0);
+ (void)kill(child_pid, SIGTERM);
+
+ sleep(5);
+
+ parent_pid = getpid();
+ child_pid = fork();
+ if (child_pid < 0)
+ err(-1, "fork");
+ if (child_pid == 0) {
+ child_pid = getpid();
+ tcp_server(parent_pid);
+ return (0);
+ } else
+ tcp_client(child_pid, 1);
+ (void)kill(child_pid, SIGTERM);
+
+ return (0);
+}
diff --git a/tools/regression/netinet/tcpsocktimewait/Makefile b/tools/regression/netinet/tcpsocktimewait/Makefile
new file mode 100644
index 0000000..f86fefc
--- /dev/null
+++ b/tools/regression/netinet/tcpsocktimewait/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= tcpsocktimewait
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/tcpsocktimewait/tcpsocktimewait.c b/tools/regression/netinet/tcpsocktimewait/tcpsocktimewait.c
new file mode 100644
index 0000000..a5e6542
--- /dev/null
+++ b/tools/regression/netinet/tcpsocktimewait/tcpsocktimewait.c
@@ -0,0 +1,172 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * TCP regression test that opens a loopback TCP session, then closes one end
+ * while shutting down the other. This triggers an unusual TCP stack case in
+ * which an open file descriptor / socket is associated with a closed TCP
+ * connection.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define TCP_PORT 9001
+
+static void
+tcp_server(pid_t partner)
+{
+ int error, listen_fd, accept_fd;
+ struct sockaddr_in sin;
+
+ listen_fd = socket(PF_INET, SOCK_STREAM, 0);
+ if (listen_fd < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: socket");
+ }
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_family = AF_INET;
+ sin.sin_len = sizeof(sin);
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(TCP_PORT);
+
+ if (bind(listen_fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: bind");
+ }
+
+ if (listen(listen_fd, -1) < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: listen");
+ }
+
+ accept_fd = accept(listen_fd, NULL, NULL);
+ if (accept_fd < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "tcp_server: accept");
+ }
+ close(accept_fd);
+ close(listen_fd);
+}
+
+static void
+tcp_client(pid_t partner, int secs)
+{
+ struct sockaddr_in sin;
+ int error, sock;
+
+ sleep(1);
+
+ sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "socket");
+ }
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_family = AF_INET;
+ sin.sin_len = sizeof(sin);
+ sin.sin_addr.s_addr = ntohl(INADDR_LOOPBACK);
+ sin.sin_port = htons(TCP_PORT);
+
+ if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "connect");
+ }
+
+ if (shutdown(sock, SHUT_RDWR) < 0) {
+ error = errno;
+ (void)kill(partner, SIGTERM);
+ errno = error;
+ err(-1, "shutdown");
+ }
+
+ sleep(secs);
+ close(sock);
+}
+
+int
+main(int argc, char *argv[])
+{
+ pid_t child_pid, parent_pid;
+
+ if (signal(SIGCHLD, SIG_IGN) == SIG_ERR)
+ err(-1, "signal");
+
+ /*
+ * Run the whole thing twice: once, with a short sleep in the client,
+ * so that we close before time wait runs out, and once with a long
+ * sleep so that the time wait terminates while the socket is open.
+ */
+ parent_pid = getpid();
+ child_pid = fork();
+ if (child_pid < 0)
+ err(-1, "fork");
+ if (child_pid == 0) {
+ child_pid = getpid();
+ tcp_server(child_pid);
+ exit(0);
+ } else
+ tcp_client(parent_pid, 1);
+ (void)kill(child_pid, SIGTERM);
+ sleep(5);
+
+ parent_pid = getpid();
+ child_pid = fork();
+ if (child_pid < 0)
+ err(-1, "fork");
+ if (child_pid == 0) {
+ child_pid = getpid();
+ tcp_server(parent_pid);
+ } else
+ tcp_client(child_pid, 800);
+
+ return (0);
+}
diff --git a/tools/regression/netinet/tcpstream/Makefile b/tools/regression/netinet/tcpstream/Makefile
new file mode 100644
index 0000000..6f6491a
--- /dev/null
+++ b/tools/regression/netinet/tcpstream/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+CFLAGS+= -Wall
+PROG= tcpstream
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/tcpstream/README b/tools/regression/netinet/tcpstream/README
new file mode 100644
index 0000000..df2e9b1
--- /dev/null
+++ b/tools/regression/netinet/tcpstream/README
@@ -0,0 +1,20 @@
+tcpstream - a simple TCP streaming test tool
+--------------------------------------------
+
+tcpstream generates TCP connections between a 'client' and a 'server'. The
+client writes a pseudo-random byte stream using varying write sizes. The
+server then reads the stream and uses the same generator to confirm that the
+data is correct. To run tcpstream, select a seed value (should be the same
+for the client and server), and a port number (also the same for client and
+server). Typical use might be:
+
+Run the server on port 8080 and use a seed of 100:
+
+ tcpstream server 8080 100
+
+Now run the client on a second machine with the server's IP, port 8080, and
+seed of 100:
+
+ tcpstream client 192.168.10.10 8080 100
+
+$FreeBSD$
diff --git a/tools/regression/netinet/tcpstream/tcpstream.c b/tools/regression/netinet/tcpstream/tcpstream.c
new file mode 100644
index 0000000..c8fe9a3
--- /dev/null
+++ b/tools/regression/netinet/tcpstream/tcpstream.c
@@ -0,0 +1,233 @@
+/*-
+ * Copyright (c) 2004 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * tcpstream sets up a simple TCP client and server, and then streams a
+ * predictable pseudo-random byte sequence through it using variable block
+ * sizes. The intent is to to detect corruption of data in the TCP stream.
+ */
+
+#include <sys/types.h>
+#include <sys/errno.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <arpa/inet.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define MAX_LOOPS 10240
+#define MAX_LONGS 1024
+
+static void
+usage(void)
+{
+
+ fprintf(stderr, "tcpstream client [ip] [port] [seed]\n");
+ fprintf(stderr, "tcpstream server [port] [seed]\n");
+ exit(-1);
+}
+
+static void
+fill_buffer(long *buffer, int len)
+{
+ int i;
+
+ for (i = 0; i < len; i++)
+ buffer[i] = htonl(random());
+}
+
+static int
+check_buffer(long *buffer, int len)
+{
+ int i;
+
+ for (i = 0; i < len; i++) {
+ if (buffer[i] != htonl(random()))
+ return (0);
+ }
+ return (1);
+}
+
+static void
+tcpstream_client(struct sockaddr_in sin, long seed)
+{
+ long buffer[MAX_LONGS];
+ ssize_t len;
+ int i, j, sock;
+
+ srandom(seed);
+
+ sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock == -1)
+ errx(-1, "socket: %s", strerror(errno));
+
+ if (connect(sock, (struct sockaddr *) &sin, sizeof(sin)) == -1)
+ errx(-1, "connect: %s", strerror(errno));
+
+ for (j = 0; j < MAX_LOOPS; j++) {
+ for (i = 0; i < MAX_LONGS; i++) {
+ fill_buffer(buffer, i);
+ len = send(sock, buffer, i * sizeof(long), 0);
+ if (len == -1) {
+ printf("%d bytes written of %d expected\n",
+ len, i * sizeof(long));
+ fflush(stdout);
+ perror("send");
+ goto done;
+ }
+ }
+ }
+
+done:
+ close(sock);
+}
+
+static void
+tcpstream_server(struct sockaddr_in sin, long seed)
+{
+ int i, j, listen_sock, accept_sock;
+ struct sockaddr_in other_sin;
+ long buffer[MAX_LONGS];
+ socklen_t addrlen;
+ ssize_t len;
+
+ int input_byte_counter;
+
+ listen_sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (listen_sock == -1)
+ errx(-1, "socket: %s", strerror(errno));
+
+ if (bind(listen_sock, (struct sockaddr *)&sin, sizeof(sin)) == -1)
+ errx(-1, "bind: %s", strerror(errno));
+
+ if (listen(listen_sock, -1) == -1)
+ errx(-1, "listen: %s", strerror(errno));
+
+ while (1) {
+ bzero(&other_sin, sizeof(other_sin));
+ addrlen = sizeof(other_sin);
+
+ accept_sock = accept(listen_sock, (struct sockaddr *)
+ &other_sin, &addrlen);
+ if (accept_sock == -1) {
+ perror("accept");
+ continue;
+ }
+ printf("connection opened from %s:%d\n",
+ inet_ntoa(other_sin.sin_addr), ntohs(other_sin.sin_port));
+ input_byte_counter = 0;
+
+ srandom(seed);
+
+ for (j = 0; j < MAX_LOOPS; j++) {
+ for (i = 0; i < MAX_LONGS; i++) {
+ len = recv(accept_sock, buffer,
+ i * sizeof(long), MSG_WAITALL);
+ if (len != i * sizeof(long)) {
+ perror("recv");
+ goto done;
+ }
+ if (check_buffer(buffer, i) == 0) {
+ fprintf(stderr,
+ "Corruption in block beginning %d and ending %d\n", input_byte_counter,
+ input_byte_counter + len);
+ fprintf(stderr,
+ "Block size %d\n", i * sizeof(long));
+ goto done;
+ }
+ input_byte_counter += len;
+ }
+ }
+done:
+ printf("connection closed\n");
+ close(accept_sock);
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct sockaddr_in sin;
+ long port, seed;
+ char *dummy;
+
+ if (argc < 2)
+ usage();
+ if (strcmp(argv[1], "client") == 0) {
+ if (argc != 5)
+ usage();
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+
+ if (inet_aton(argv[2], &sin.sin_addr) != 1)
+ errx(-1, "%s: %s", argv[2], strerror(EINVAL));
+
+ port = strtoul(argv[3], &dummy, 10);
+ if (port < 1 || port > 65535 || *dummy != '\0')
+ usage();
+ sin.sin_port = htons(port);
+
+ seed = strtoul(argv[4], &dummy, 10);
+ if (*dummy != '\0')
+ usage();
+
+ tcpstream_client(sin, seed);
+
+ } else if (strcmp(argv[1], "server") == 0) {
+ if (argc != 4)
+ usage();
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = INADDR_ANY;
+
+ port = strtoul(argv[2], &dummy, 10);
+ if (port < 1 || port > 65535 || *dummy != '\0')
+ usage();
+ sin.sin_port = htons(port);
+
+ seed = strtoul(argv[3], &dummy, 10);
+ if (*dummy != '\0')
+ usage();
+
+ tcpstream_server(sin, seed);
+ } else
+ usage();
+
+ return (0);
+}
diff --git a/tools/regression/netinet/udpconnectjail/Makefile b/tools/regression/netinet/udpconnectjail/Makefile
new file mode 100644
index 0000000..bd5d0b1
--- /dev/null
+++ b/tools/regression/netinet/udpconnectjail/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= udpconnectjail
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet/udpconnectjail/udpconnectjail.c b/tools/regression/netinet/udpconnectjail/udpconnectjail.c
new file mode 100644
index 0000000..7151ca4
--- /dev/null
+++ b/tools/regression/netinet/udpconnectjail/udpconnectjail.c
@@ -0,0 +1,110 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/jail.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <arpa/inet.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * A bug in the jail(8) code prevented processes in jail from properly
+ * connecting UDP sockets. This test program attempts to exercise that bug.
+ */
+
+static void
+usage(void)
+{
+
+ fprintf(stderr, "udpconnectjail: no arguments\n");
+ exit(-1);
+}
+
+static void
+test(const char *context, struct sockaddr_in *sin)
+{
+ int sock;
+
+ sock = socket(PF_INET, SOCK_DGRAM, 0);
+ if (sock == -1)
+ errx(-1, "%s: socket(PF_INET, SOCK_DGRAM, 0): %s", context,
+ strerror(errno));
+
+ if (connect(sock, (struct sockaddr *)sin, sizeof(*sin)) < 0)
+ errx(-1, "%s: connect(%s): %s", context,
+ inet_ntoa(sin->sin_addr), strerror(errno));
+
+ if (close(sock) < 0)
+ errx(-1, "%s: close(): %s", context, strerror(errno));
+}
+
+int
+main(int argc, __unused char *argv[])
+{
+ struct sockaddr_in sin;
+ struct jail thejail;
+
+ if (argc != 1)
+ usage();
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(8080); /* Arbitrary */
+
+ /*
+ * First run the system call test outside of a jail.
+ */
+ test("not in jail", &sin);
+
+ /*
+ * Now re-run in a jail.
+ */
+ bzero(&thejail, sizeof(thejail));
+ thejail.version = 0;
+ thejail.path = "/";
+ thejail.hostname = "jail";
+ thejail.ip_number = INADDR_LOOPBACK;
+ if (jail(&thejail) < 0)
+ errx(-1, "jail: %s", strerror(errno));
+ test("in jail", &sin);
+
+ fprintf(stdout, "PASS\n");
+
+ return (0);
+}
diff --git a/tools/regression/netinet6/inet6_rth/Makefile b/tools/regression/netinet6/inet6_rth/Makefile
new file mode 100644
index 0000000..ac284d3
--- /dev/null
+++ b/tools/regression/netinet6/inet6_rth/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+PROG= inet6_rth-segments
+SRCS= test_subr.c inet6_rth-segments.c
+NO_MAN=
+
+CFLAGS+= -Wall
+DEBUG_FLAGS= -g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet6/inet6_rth/inet6_rth-segments.c b/tools/regression/netinet6/inet6_rth/inet6_rth-segments.c
new file mode 100644
index 0000000..5ac1d97
--- /dev/null
+++ b/tools/regression/netinet6/inet6_rth/inet6_rth-segments.c
@@ -0,0 +1,336 @@
+/*-
+ * Copyright (c) 2007 Michael Telahun Makonnen
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+#include <netinet/ip6.h>
+
+#include <netdb.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "test_subr.h"
+
+static void init_hdrs(struct msghdr *, struct cmsghdr *, char *, size_t);
+static void test_cmsg_firsthdr();
+static void test_cmsg_nexthdr();
+static void test_rth_space();
+static void test_rth_segments();
+static void test_rth_add();
+static void test_rth_init();
+
+int
+main(int argc, char* argv[])
+{
+ /*
+ * Initialize global variables.
+ */
+ g_total = 0;
+ g_pass = 0;
+ g_fail = 0;
+ memset(g_funcname, 0, sizeof(g_funcname));
+
+ /*
+ * Start the tests.
+ */
+ printf("Starting inet6_rth_* and cmsg macro regression tests...\n");
+
+ test_cmsg_firsthdr(); /* CMSG_FIRSTHDR */
+ test_cmsg_nexthdr(); /* CMSG_NEXTHDR */
+ test_rth_space(); /* inet6_rth_space */
+ test_rth_segments(); /* inet6_rth_segments */
+ test_rth_add(); /* inet6_rth_add */
+ test_rth_init(); /* inet6_rth_space */
+
+ if (g_fail == 0)
+ printf("OK. ");
+ else
+ printf("NOT OK. ");
+ printf("Total: %d Pass: %d Fail: %d\n", g_total, g_pass, g_fail);
+
+ return (g_fail);
+}
+
+void
+test_rth_init()
+{
+ char buf[10240];
+ char *pbuf;
+
+ set_funcname("test_rth_init", sizeof("test_rth_init\0"));
+
+ pbuf = inet6_rth_init((void *)buf, 10, IPV6_RTHDR_TYPE_0, 100);
+ checkptr(NULL, pbuf, "buffer too small\0");
+
+ pbuf = inet6_rth_init((void *)buf, 10240, IPV6_RTHDR_TYPE_0, 0);
+ checkptr((caddr_t)&buf, pbuf, "0 segments\0");
+
+ pbuf = inet6_rth_init((void *)buf, 10240, IPV6_RTHDR_TYPE_0, 127);
+ checkptr((caddr_t)&buf, pbuf, "127 segments\0");
+
+ pbuf = inet6_rth_init((void *)buf, 10240, IPV6_RTHDR_TYPE_0, -1);
+ checkptr(NULL, pbuf, "negative number of segments\0");
+
+ pbuf = inet6_rth_init((void *)buf, 10240, IPV6_RTHDR_TYPE_0, 128);
+ checkptr(NULL, pbuf, "128 segments\0");
+}
+
+void
+test_rth_add()
+{
+ int i, ret;
+ char buf[10240];
+ struct addrinfo *res;
+ struct addrinfo hints;
+
+ set_funcname("test_rth_add", sizeof("test_rth_add\0"));
+
+ if (NULL == inet6_rth_init(buf, 10240, IPV6_RTHDR_TYPE_0, 127))
+ abort();
+ memset((void *)&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = AF_INET6;
+ hints.ai_flags = AI_NUMERICHOST;
+ if (0 != getaddrinfo("::1", NULL, (const struct addrinfo *)&hints, &res))
+ abort();
+ for (i = 0; i < 127; i++)
+ inet6_rth_add((void *)buf,
+ &((struct sockaddr_in6 *)(res->ai_addr))->sin6_addr);
+ checknum(127, ((struct ip6_rthdr0 *)buf)->ip6r0_segleft, 0,
+ "add 127 segments\0");
+
+ ret = inet6_rth_add((void *)buf,
+ &((struct sockaddr_in6 *)(res->ai_addr))->sin6_addr);
+ checknum(-1, ret, 0, "add 128th segment to 127 segment header\0");
+
+ freeaddrinfo(res);
+}
+
+void
+test_rth_segments()
+{
+ int seg;
+ char buf[10240];
+
+ set_funcname("test_rth_segments", sizeof("test_rth_segments\0"));
+
+ /*
+ * Test: invalid routing header type.
+ */
+ if (NULL == inet6_rth_init((void *)buf, 10240, IPV6_RTHDR_TYPE_0, 0))
+ abort();
+ ((struct ip6_rthdr *)buf)->ip6r_type = ~IPV6_RTHDR_TYPE_0;
+ seg = inet6_rth_segments((const void *)buf);
+ checknum(-1, seg, 0, "invalid routing header type\0");
+
+ /*
+ * Test: 0 segments.
+ */
+ if (NULL == inet6_rth_init((void *)buf, 10240, IPV6_RTHDR_TYPE_0, 0))
+ abort();
+ seg = inet6_rth_segments((const void *)buf);
+ checknum(0, seg, 0, "0 segments\0");
+
+ /*
+ * Test: 127 segments.
+ */
+ if (NULL == inet6_rth_init((void *)buf, 10240, IPV6_RTHDR_TYPE_0, 127))
+ abort();
+ seg = inet6_rth_segments((const void *)buf);
+ checknum(127, seg, 0, "127 segments\0");
+
+ /*
+ * Test: -1 segments.
+ */
+/*
+ if (NULL == inet6_rth_init((void *)buf, 10240, IPV6_RTHDR_TYPE_0, 0))
+ abort();
+ ((struct ip6_rthdr0 *)buf)->ip6r0_len = -1 * 2;
+ seg = inet6_rth_segments((const void *)buf);
+ checknum(-1, seg, 0, "-1 segments\0");
+*/
+ /*
+ * Test: 128 segments.
+ */
+/*
+ if (NULL == inet6_rth_init((void *)buf, 10240, IPV6_RTHDR_TYPE_0, 127))
+ abort();
+ ((struct ip6_rthdr0 *)buf)->ip6r0_len = 128 * 2;
+ seg = inet6_rth_segments((const void *)buf);
+ checknum(-1, seg, 0, "128 segments\0");
+*/
+}
+
+void
+test_rth_space()
+{
+ socklen_t len;
+
+ set_funcname("test_rth_space", sizeof("test_rth_space\0"));
+
+ /*
+ * Test: invalid routing header type.
+ */
+ len = inet6_rth_space(~IPV6_RTHDR_TYPE_0, 0);
+ checknum(0, len, 0, "invalid routing header type\0");
+
+ /*
+ * Test: valid number of segments.
+ */
+ len = inet6_rth_space(IPV6_RTHDR_TYPE_0, 0);
+ checknum(0, len, 1, "0 segments\0");
+ len = inet6_rth_space(IPV6_RTHDR_TYPE_0, 127);
+ checknum(0, len, 1, "0 segments\0");
+
+ /*
+ * Test: invalid number of segments.
+ */
+ len = inet6_rth_space(IPV6_RTHDR_TYPE_0, -1);
+ checknum(0, len, 0, "-1 segments\0");
+ len = inet6_rth_space(IPV6_RTHDR_TYPE_0, 128);
+ checknum(0, len, 0, "128 segments\0");
+}
+
+void
+test_cmsg_nexthdr()
+{
+ struct msghdr mh;
+ struct cmsghdr cmh;
+ struct cmsghdr *cmhp, *cmhnextp;
+ char ancbuf[10240];
+ char magic[] = "MAGIC";
+
+ set_funcname("test_cmsg_nexthdr", sizeof("test_cmsg_nexthdr"));
+
+ /*
+ * Test: More than one cmsghdr
+ */
+ init_hdrs(&mh, &cmh, ancbuf, sizeof(ancbuf));
+ mh.msg_control = (caddr_t)ancbuf;
+ mh.msg_controllen = CMSG_SPACE(0) * 2; /* 2 cmsghdr with no data */
+ cmh.cmsg_len = CMSG_LEN(0);
+
+ /*
+ * Copy the same instance of cmsghdr twice. Use a magic value
+ * to id the second copy.
+ */
+ bcopy((void *)&cmh, (void *)ancbuf, sizeof(cmh));
+ strlcpy((char *)&cmh, (const char *)&magic, sizeof(magic));
+ bcopy((void *)&cmh,
+ (void *)((caddr_t)ancbuf + CMSG_SPACE(0)),
+ sizeof(cmh));
+ cmhp = CMSG_FIRSTHDR(&mh);
+ cmhnextp = CMSG_NXTHDR(&mh, cmhp);
+ checkstr((const char *)&magic, (const char *)cmhnextp, sizeof(magic),
+ "more than one cmsghdr\0");
+
+ /*
+ * Test: only one cmsghdr
+ */
+ init_hdrs(&mh, &cmh, ancbuf, sizeof(ancbuf));
+ mh.msg_control = (caddr_t)ancbuf;
+ mh.msg_controllen = CMSG_SPACE(0);
+ cmh.cmsg_len = CMSG_LEN(0);
+ bcopy((void *)&cmh, (void *)ancbuf, sizeof(cmh));
+ cmhp = CMSG_FIRSTHDR(&mh);
+ cmhnextp = CMSG_NXTHDR(&mh, cmhp);
+ checkptr(NULL, (caddr_t)cmhnextp, "only one cmsghdr\0");
+
+ /*
+ * Test: NULL cmsg pointer
+ */
+ init_hdrs(&mh, &cmh, ancbuf, sizeof(ancbuf));
+ mh.msg_control = (caddr_t)ancbuf;
+ mh.msg_controllen = sizeof(ancbuf);
+ cmh.cmsg_len = sizeof(ancbuf);
+ bcopy((void *)&cmh, (void *)ancbuf, sizeof(cmh));
+ cmhp = CMSG_FIRSTHDR(&mh);
+ cmhnextp = CMSG_NXTHDR(&mh, NULL);
+ checkptr((caddr_t)cmhp, (caddr_t)cmhnextp, "null second argument\0");
+}
+
+void
+test_cmsg_firsthdr()
+{
+ struct msghdr mh;
+ struct cmsghdr cmh;
+ struct cmsghdr *cmhp;
+ char ancbuf[1024];
+ char magic[] = "MAGIC";
+
+ set_funcname("test_cmsg_firsthdr", sizeof("test_cmsg_firsthdr"));
+
+ /* CMSG_FIRSTHDR() where msg_control is NULL */
+ init_hdrs(&mh, NULL, NULL, 0);
+ mh.msg_control = NULL;
+ cmhp = CMSG_FIRSTHDR(&mh);
+ checkptr(NULL, (caddr_t)cmhp,
+ "msg_control is NULL\0");
+
+ /* - where msg_controllen < sizeof cmsghdr */
+ init_hdrs(&mh, NULL, NULL, 0);
+ mh.msg_control = (caddr_t)&cmh;
+ mh.msg_controllen = sizeof(cmh) - 1;
+ cmhp = CMSG_FIRSTHDR(&mh);
+ checkptr(NULL, (caddr_t)cmhp,
+ "msg_controllen < sizeof cmsghdr\0");
+
+ /* - where msg_controllen == 0 */
+ init_hdrs(&mh, NULL, NULL, 0);
+ mh.msg_control = (caddr_t)&cmh;
+ mh.msg_controllen = 0;
+ cmhp = CMSG_FIRSTHDR(&mh);
+ checkptr(NULL, (caddr_t)cmhp,
+ "msg_controllen == 0\0");
+
+ /* no errors */
+ init_hdrs(&mh, &cmh, ancbuf, sizeof(ancbuf));
+ memset((void *)ancbuf, 0, sizeof(ancbuf));
+ mh.msg_control = (caddr_t)ancbuf;
+ mh.msg_controllen = sizeof(ancbuf);
+ strlcpy((char *)&cmh, (const char *)&magic, sizeof(magic));
+ bcopy((void *)&cmh, (void *)ancbuf, sizeof(cmh));
+ cmhp = CMSG_FIRSTHDR(&mh);
+ checkstr((const char *)&magic, (const char *)cmhp, sizeof(magic),
+ "with payload\0");
+}
+
+void
+init_hdrs(struct msghdr *mhp, struct cmsghdr *cmhp, char *bufp, size_t bufsize)
+{
+ if (mhp != NULL)
+ memset((void *)mhp, 0, sizeof(struct msghdr));
+ if (cmhp != NULL)
+ memset((void *)cmhp, 0, sizeof(struct cmsghdr));
+ if (bufp != NULL)
+ memset((void *)bufp, 0, bufsize);
+}
diff --git a/tools/regression/netinet6/inet6_rth/test_subr.c b/tools/regression/netinet6/inet6_rth/test_subr.c
new file mode 100644
index 0000000..ab09ec8
--- /dev/null
+++ b/tools/regression/netinet6/inet6_rth/test_subr.c
@@ -0,0 +1,166 @@
+/*-
+ * Copyright (c) 2007 Michael Telahun Makonnen
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "test_subr.h"
+
+int g_total;
+int g_pass;
+int g_fail;
+char g_funcname[FUNCNAMESIZE];
+char g_testdesc[LINESIZE];
+char g_errbuf[LINESIZE];
+
+void
+set_funcname(char *bufp, size_t bufsize)
+{
+ strlcpy(g_funcname, bufp,
+ bufsize < FUNCNAMESIZE ? bufsize : FUNCNAMESIZE);
+}
+
+/*
+ * desc is a NULL-terminated string.
+ */
+void
+checkptr(caddr_t expected, caddr_t got, const char *desc)
+{
+ int len;
+ int failed;
+ char sbuf[LINESIZE];
+
+ memset((void *)sbuf, 0, LINESIZE);
+ snprintf(g_testdesc, LINESIZE, desc);
+
+ failed = 1;
+ g_total++;
+ if (got == expected) {
+ len = snprintf(sbuf, LINESIZE, "ok");
+ g_pass++;
+ failed = 0;
+ } else {
+ len = snprintf(sbuf, LINESIZE, "not ok");
+ snprintf(g_errbuf, LINESIZE, " : Expected %#x, but got %#x",
+ (unsigned int)expected, (unsigned int)got);
+ g_fail++;
+ }
+ snprintf(sbuf + len, LINESIZE - len, " %d - %s (%s)",
+ g_total, g_funcname, g_testdesc);
+ printf(sbuf);
+ if (failed)
+ printf(g_errbuf);
+ printf("\n");
+ fflush(NULL);
+ memset((void *)g_errbuf, 0, LINESIZE);
+ memset((void *)g_testdesc, 0, LINESIZE);
+}
+
+void
+checkstr(const char *expected, const char *got, size_t explen, const char *desc)
+{
+ int len;
+ int failed;
+ char sbuf[LINESIZE];
+
+ memset((void *)sbuf, 0, LINESIZE);
+ snprintf(g_testdesc, LINESIZE, desc);
+
+ failed = 1;
+ g_total++;
+ if (strncmp(expected, got, explen) == 0) {
+ len = snprintf(sbuf, LINESIZE, "ok");
+ g_pass++;
+ failed = 0;
+ } else {
+ len = snprintf(sbuf, LINESIZE, "not ok");
+ snprintf(g_errbuf, LINESIZE,
+ " : Expected %s, but got %s", expected, got);
+ g_fail++;
+ }
+ snprintf(sbuf + len, LINESIZE - len, " %d - %s (%s)",
+ g_total, g_funcname, g_testdesc);
+ printf(sbuf);
+ if (failed)
+ printf(g_errbuf);
+ printf("\n");
+ fflush(NULL);
+ memset((void *)g_errbuf, 0, LINESIZE);
+ memset((void *)g_testdesc, 0, LINESIZE);
+}
+
+void
+checknum(int expected, int got, int cmp, const char *desc)
+{
+ int len;
+ int pass;
+ int failed;
+ char sbuf[LINESIZE];
+
+ memset((void *)sbuf, 0, LINESIZE);
+ snprintf(g_testdesc, LINESIZE, desc);
+
+ failed = 1;
+ pass = 0;
+ g_total++;
+ switch(cmp) {
+ case 0:
+ pass = (got == expected) ? 1 : 0;
+ break;
+ case 1:
+ pass = (got > expected) ? 1 : 0;
+ break;
+ case -1:
+ pass = (got < expected) ? 1 : 0;
+ break;
+ }
+ if (pass != 0) {
+ len = snprintf(sbuf, LINESIZE, "ok");
+ g_pass++;
+ failed = 0;
+ } else {
+ len = snprintf(sbuf, LINESIZE, "not ok");
+ snprintf(g_errbuf, LINESIZE,
+ " : Expected %d, but got %d", expected, got);
+ g_fail++;
+ }
+ snprintf(sbuf + len, LINESIZE - len, " %d - %s (%s)",
+ g_total, g_funcname, g_testdesc);
+ printf(sbuf);
+ if (failed)
+ printf(g_errbuf);
+ printf("\n");
+ fflush(NULL);
+ memset((void *)g_errbuf, 0, LINESIZE);
+ memset((void *)g_testdesc, 0, LINESIZE);
+}
diff --git a/tools/regression/netinet6/inet6_rth/test_subr.h b/tools/regression/netinet6/inet6_rth/test_subr.h
new file mode 100644
index 0000000..f0463da
--- /dev/null
+++ b/tools/regression/netinet6/inet6_rth/test_subr.h
@@ -0,0 +1,44 @@
+/*-
+ * Copyright (c) 2007 Michael Telahun Makonnen
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+
+#define LINESIZE 256
+#define FUNCNAMESIZE 32
+
+extern int g_total;
+extern int g_pass;
+extern int g_fail;
+extern char g_funcname[FUNCNAMESIZE];
+extern char g_testdesc[LINESIZE];
+extern char g_errbuf[LINESIZE];
+
+void set_funcname(char *, size_t);
+void checkptr(caddr_t, caddr_t, const char *);
+void checkstr(const char *, const char *, size_t, const char*);
+void checknum(int, int, int, const char *);
diff --git a/tools/regression/netinet6/ip6_sockets/Makefile b/tools/regression/netinet6/ip6_sockets/Makefile
new file mode 100644
index 0000000..4f6bc78
--- /dev/null
+++ b/tools/regression/netinet6/ip6_sockets/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= ip6_sockets
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netinet6/ip6_sockets/ip6_sockets.c b/tools/regression/netinet6/ip6_sockets/ip6_sockets.c
new file mode 100644
index 0000000..07e6209
--- /dev/null
+++ b/tools/regression/netinet6/ip6_sockets/ip6_sockets.c
@@ -0,0 +1,88 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <err.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Simple regression test to create and close a variety of IPv6 socket types.
+ */
+
+int
+main(int argc, char *argv[])
+{
+ struct sockaddr_in6 sin6;
+ int s;
+
+ /*
+ * UDPv6 simple test.
+ */
+ s = socket(PF_INET6, SOCK_DGRAM, 0);
+ if (s < 0)
+ err(-1, "socket(PF_INET6, SOCK_DGRAM, 0)");
+ close(s);
+
+ /*
+ * UDPv6 connected case -- connect UDPv6 to an arbitrary port so that
+ * when we close the socket, it goes through the disconnect logic.
+ */
+ s = socket(PF_INET6, SOCK_DGRAM, 0);
+ if (s < 0)
+ err(-1, "socket(PF_INET6, SOCK_DGRAM, 0)");
+ bzero(&sin6, sizeof(sin6));
+ sin6.sin6_len = sizeof(sin6);
+ sin6.sin6_family = AF_INET6;
+ sin6.sin6_addr = in6addr_loopback;
+ sin6.sin6_port = htons(1024);
+ if (connect(s, (struct sockaddr *)&sin6, sizeof(sin6)) < 0)
+ err(-1, "connect(SOCK_DGRAM, ::1)");
+ close(s);
+
+ /*
+ * TCPv6.
+ */
+ s = socket(PF_INET6, SOCK_STREAM, 0);
+ if (s < 0)
+ err(-1, "socket(PF_INET6, SOCK_STREAM, 0)");
+ close(s);
+
+ /*
+ * Raw IPv6.
+ */
+ s = socket(PF_INET6, SOCK_RAW, 0);
+ if (s < 0)
+ err(-1, "socket(PF_INET6, SOCK_RAW, 0)");
+ close(s);
+
+ return (0);
+}
diff --git a/tools/regression/netipx/README b/tools/regression/netipx/README
new file mode 100644
index 0000000..a1a07a4
--- /dev/null
+++ b/tools/regression/netipx/README
@@ -0,0 +1,11 @@
+These regression tests assume that the kernel is compiled with support for
+netipx:
+
+ options IPX
+
+In addition, the loopback interface should be configured with the address
+0xbebe.1:
+
+ ifconfig lo0 ipx 0xbebe.1
+
+$FreeBSD$
diff --git a/tools/regression/netipx/ipxdgramloopback/Makefile b/tools/regression/netipx/ipxdgramloopback/Makefile
new file mode 100644
index 0000000..364d787
--- /dev/null
+++ b/tools/regression/netipx/ipxdgramloopback/Makefile
@@ -0,0 +1,12 @@
+#
+# $FreeBSD$
+#
+
+PROG= ipxdgramloopback
+NO_MAN=
+
+DPADD= ${LIBIPX};
+LDADD= -lipx
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netipx/ipxdgramloopback/ipxdgramloopback.c b/tools/regression/netipx/ipxdgramloopback/ipxdgramloopback.c
new file mode 100644
index 0000000..b969b48
--- /dev/null
+++ b/tools/regression/netipx/ipxdgramloopback/ipxdgramloopback.c
@@ -0,0 +1,118 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Simple netipx regression test that attempts to build an IPX datagram
+ * socket pair and send a packet from one to the other.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netipx/ipx.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+
+#define IPX_ENDPOINT "0xbebe.1.0x8a13"
+#define PACKETLEN 128
+
+int
+main(int argc, char *argv[])
+{
+ struct sockaddr_ipx sipx_recv, sipx_send;
+ u_char packet[PACKETLEN];
+ int i, sock_recv, sock_send;
+ ssize_t len;
+
+ /*
+ * Socket to receive with.
+ */
+ sock_recv = socket(PF_IPX, SOCK_DGRAM, 0);
+ if (sock_recv < 0)
+ err(-1, "sock_recv = socket(PF_IPX, SOCK_DGRAM, 0)");
+
+ bzero(&sipx_recv, sizeof(sipx_recv));
+ sipx_recv.sipx_len = sizeof(sipx_recv);
+ sipx_recv.sipx_family = AF_IPX;
+ sipx_recv.sipx_addr = ipx_addr(IPX_ENDPOINT);
+
+ if (bind(sock_recv, (struct sockaddr *)&sipx_recv, sizeof(sipx_recv))
+ < 0)
+ err(-1, "bind(sock_recv)");
+
+ /*
+ * Set non-blocking to try to avoid blocking indefinitely if the
+ * packet doesn't end up in the right place.
+ */
+ if (fcntl(sock_recv, F_SETFL, O_NONBLOCK) < 0)
+ err(-1, "fcntl(O_NONBLOCK, sock_recv)");
+
+ /*
+ * Socket to send with.
+ */
+ sock_send = socket(PF_IPX, SOCK_DGRAM, 0);
+ if (sock_send < 0)
+ err(-1, "sock_send = socket(PF_IPX, SOCK_DGRAM, 0)");
+
+ bzero(&sipx_send, sizeof(sipx_send));
+ sipx_send.sipx_len = sizeof(sipx_send);
+ sipx_send.sipx_family = AF_IPX;
+ sipx_send.sipx_addr = ipx_addr(IPX_ENDPOINT);
+
+ for (i = 0; i < PACKETLEN; i++)
+ packet[i] = (i & 0xff);
+
+ len = sendto(sock_send, packet, sizeof(packet), 0,
+ (struct sockaddr *)&sipx_send, sizeof(sipx_send));
+ if (len < 0)
+ err(-1, "sendto()");
+ if (len != sizeof(packet))
+ errx(-1, "sendto(): short send (%d length, %d sent)",
+ sizeof(packet), len);
+
+ sleep(1); /* Arbitrary non-zero amount. */
+
+ bzero(packet, sizeof(packet));
+ len = recv(sock_recv, packet, sizeof(packet), 0);
+ if (len < 0)
+ err(-1, "recv()");
+ if (len != sizeof(packet))
+ errx(-1, "recv(): short receive (%d length, %d received)",
+ sizeof(packet), len);
+
+ for (i = 0; i < PACKETLEN; i++) {
+ if (packet[i] != (i & 0xff))
+ errx(-1, "recv(): byte %d wrong (%d instead of %d)",
+ i, packet[i], i & 0xff);
+ }
+
+ return (0);
+}
diff --git a/tools/regression/netipx/ipxsocket/Makefile b/tools/regression/netipx/ipxsocket/Makefile
new file mode 100644
index 0000000..65157fa
--- /dev/null
+++ b/tools/regression/netipx/ipxsocket/Makefile
@@ -0,0 +1,8 @@
+#
+# $FreeBSD$
+#
+
+PROG= ipxsocket
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netipx/ipxsocket/ipxsocket.c b/tools/regression/netipx/ipxsocket/ipxsocket.c
new file mode 100644
index 0000000..afcd2dc
--- /dev/null
+++ b/tools/regression/netipx/ipxsocket/ipxsocket.c
@@ -0,0 +1,93 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Simple regression test to open and then immediately close various types of
+ * PF_IPX sockets. Run with various waits in order to make sure that the
+ * various IPX/SPX timers have a chance to walk the pcb lists and hit the
+ * sockets.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netipx/ipx.h>
+
+#include <err.h>
+#include <unistd.h>
+
+static int
+maybe_sleep(int sec)
+{
+
+ if (sec == 0)
+ return (0);
+ return (sleep(sec));
+}
+
+int
+main(int argc, char *argv[])
+{
+ int delay, s;
+
+ for (delay = 0; delay < 5; delay++) {
+ s = socket(PF_IPX, SOCK_DGRAM, 0);
+ if (s < 0)
+ warn("socket(PF_IPX, SOCK_DGRAM, 0)");
+ else {
+ maybe_sleep(delay);
+ close(s);
+ }
+
+ s = socket(PF_IPX, SOCK_STREAM, 0);
+ if (s < 0)
+ warn("socket(PF_IPX, SOCK_STREAM, 0)");
+ else {
+ maybe_sleep(delay);
+ close(s);
+ }
+
+ s = socket(PF_IPX, SOCK_SEQPACKET, 0);
+ if (s < 0)
+ warn("socket(PF_IPX, SOCK_SEQPACKET, 0)");
+ else {
+ maybe_sleep(delay);
+ close(s);
+ }
+
+ s = socket(PF_IPX, SOCK_RAW, 0);
+ if (s < 0)
+ warn("socket(PF_IPX, SOCK_RAW, 0)");
+ else {
+ maybe_sleep(delay);
+ close(s);
+ }
+ }
+
+ return (0);
+}
diff --git a/tools/regression/netipx/spxabort/Makefile b/tools/regression/netipx/spxabort/Makefile
new file mode 100644
index 0000000..b9498a0
--- /dev/null
+++ b/tools/regression/netipx/spxabort/Makefile
@@ -0,0 +1,12 @@
+#
+# $FreeBSD$
+#
+
+PROG= spxabort
+NO_MAN=
+
+DPADD= ${LIBIPX};
+LDADD= -lipx
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netipx/spxabort/spxabort.c b/tools/regression/netipx/spxabort/spxabort.c
new file mode 100644
index 0000000..8b6537f
--- /dev/null
+++ b/tools/regression/netipx/spxabort/spxabort.c
@@ -0,0 +1,96 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Exercise the pru_abort() code for SPX by opening an SPX connection to a
+ * listen socket, then closing the listen socket before accepting.
+ *
+ * We would also like to be able to test the other two abort cases, in which
+ * incomplete connections are aborted due to overflow, and due to close of
+ * the listen socket, but that requires a packet level test rather than using
+ * the socket API.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netipx/ipx.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#define IPX_ENDPOINT "0xbebe.1.0x8a13"
+
+int
+main(int argc, char *argv[])
+{
+ struct sockaddr_ipx sipx;
+ int sock_listen, sock;
+
+ sock_listen = socket(PF_IPX, SOCK_STREAM, 0);
+ if (sock_listen < 0)
+ err(-1, "sock_listen = socket(PF_IPX, SOCK_STREAM, 0)");
+
+ bzero(&sipx, sizeof(sipx));
+ sipx.sipx_len = sizeof(sipx);
+ sipx.sipx_family = AF_IPX;
+ sipx.sipx_addr = ipx_addr(IPX_ENDPOINT);
+
+ if (bind(sock_listen, (struct sockaddr *)&sipx, sizeof(sipx)) < 0)
+ err(-1, "bind(sock_listen)");
+
+ if (listen(sock_listen, -1) < 0)
+ err(-1, "listen(sock_listen)");
+
+ sock = socket(PF_IPX, SOCK_STREAM, 0);
+ if (sock < 0)
+ err(-1, "sock = socket(PF_IPX, SOCK_STREAM, 0)");
+
+ bzero(&sipx, sizeof(sipx));
+ sipx.sipx_len = sizeof(sipx);
+ sipx.sipx_family = AF_IPX;
+ sipx.sipx_addr = ipx_addr(IPX_ENDPOINT);
+
+ if (fcntl(sock, F_SETFL, O_NONBLOCK) < 0)
+ err(-1, "fcntl(sock, F_SETFL, O_NONBLOCKING)");
+
+ if (connect(sock, (struct sockaddr *)&sipx, sizeof(sipx)) < 0) {
+ if (errno != EINPROGRESS)
+ err(-1, "sock = socket(PF_IPX, SOCK_STREAM, 0)");
+ }
+
+ sleep(1); /* Arbitrary. */
+
+ close(sock_listen);
+
+ return (0);
+};
diff --git a/tools/regression/netipx/spxloopback/Makefile b/tools/regression/netipx/spxloopback/Makefile
new file mode 100644
index 0000000..edbfbbc
--- /dev/null
+++ b/tools/regression/netipx/spxloopback/Makefile
@@ -0,0 +1,12 @@
+#
+# $FreeBSD$
+#
+
+PROG= spxloopback
+NO_MAN=
+
+DPADD= ${LIBIPX};
+LDADD= -lipx
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/netipx/spxloopback/spxloopback.c b/tools/regression/netipx/spxloopback/spxloopback.c
new file mode 100644
index 0000000..9561cff
--- /dev/null
+++ b/tools/regression/netipx/spxloopback/spxloopback.c
@@ -0,0 +1,258 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$Exp $
+ */
+
+/*
+ * Simple netipx regression test that attempts to build an SPX stream socket
+ * pair, and send data twice over the stream, once in each direction.
+ * Purposefully pick a small packet length that should fit into the buffers
+ * at both ends, and therefore not result in a buffer deadlock.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netipx/ipx.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#define IPX_ENDPOINT "0xbebe.1.0x8a13"
+#define PACKETLEN 128
+
+#if 0
+#define SPX_SUPPORTS_SENDTO_WITH_CONNECT
+#endif
+
+static void
+packet_fill(u_char *packet)
+{
+ int i;
+
+ for (i = 0; i < PACKETLEN; i++)
+ packet[i] = (i & 0xff);
+}
+
+static int
+packet_check(u_char *packet)
+{
+ int i;
+
+ for (i = 0; i < PACKETLEN; i++) {
+ if (packet[i] != (i & 0xff))
+ return (-1);
+ }
+ return (0);
+}
+
+#ifdef SPX_SUPPORTS_SENDTO_WITH_CONNECT
+static void
+my_sendto(int sock, const char *who, pid_t pid, struct sockaddr *sa,
+ socklen_t sa_len)
+{
+ u_char packet[PACKETLEN];
+ ssize_t len;
+ int error;
+
+ packet_fill(packet);
+ len = sendto(sock, packet, sizeof(packet), 0, sa, sa_len);
+ if (len < 0) {
+ error = errno;
+ (void)kill(pid, SIGTERM);
+ errno = error;
+ err(-1, "%s: sendto()", who);
+ }
+ if (len != sizeof(packet)) {
+ (void)kill(pid, SIGTERM);
+ errx(-1, "%s: sendto(): short send (%d length, %d sent)",
+ who, sizeof(packet), len);
+ }
+}
+#endif
+
+static void
+my_send(int sock, const char *who, pid_t pid)
+{
+ u_char packet[PACKETLEN];
+ ssize_t len;
+ int error;
+
+ packet_fill(packet);
+ len = send(sock, packet, sizeof(packet), 0);
+ if (len < 0) {
+ error = errno;
+ (void)kill(pid, SIGTERM);
+ errno = error;
+ err(-1, "%s: send()", who);
+ }
+ if (len != sizeof(packet)) {
+ (void)kill(pid, SIGTERM);
+ errx(-1, "%s: send(): short send (%d length, %d sent)", who,
+ sizeof(packet), len);
+ }
+}
+
+static void
+my_recv(int sock, const char *who, pid_t pid)
+{
+ u_char packet[PACKETLEN];
+ ssize_t len;
+ int error;
+
+ bzero(packet, sizeof(packet));
+ len = recv(sock, packet, sizeof(packet), 0);
+ if (len < 0) {
+ errno = error;
+ (void)kill(pid, SIGTERM);
+ errno = error;
+ err(-1, "%s: recv()", who);
+ }
+ if (len != sizeof(packet)) {
+ (void)kill(pid, SIGTERM);
+ errx(-1, "%s: recv(): got %d expected %d", who, len,
+ sizeof(packet));
+ }
+ if (packet_check(packet) < 0) {
+ (void)kill(pid, SIGTERM);
+ errx(-1, "%s: recv(): got bad data", who);
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ int error, sock_listen, sock_recv, sock_send;
+ struct sockaddr_ipx sipx_listen, sipx_send;
+ pid_t childpid, parentpid;
+
+ /*
+ * Socket to receive with.
+ */
+ sock_listen = socket(PF_IPX, SOCK_STREAM, 0);
+ if (sock_listen < 0)
+ err(-1, "sock_listen = socket(PF_IPX, SOCK_STREAM, 0)");
+
+ bzero(&sipx_listen, sizeof(sipx_listen));
+ sipx_listen.sipx_len = sizeof(sipx_listen);
+ sipx_listen.sipx_family = AF_IPX;
+ sipx_listen.sipx_addr = ipx_addr(IPX_ENDPOINT);
+
+ if (bind(sock_listen, (struct sockaddr *)&sipx_listen,
+ sizeof(sipx_listen)) < 0)
+ err(-1, "bind(sock_listen)");
+
+ if (listen(sock_listen, -1) < 0)
+ err(-1, "listen(sock_listen)");
+
+ parentpid = getpid();
+
+ childpid = fork();
+ if (childpid < 0)
+ err(-1, "fork()");
+
+ if (childpid == 0) {
+ /*
+ * The child: accept connections and process data on them.
+ */
+ while (1) {
+ sock_recv = accept(sock_listen, NULL, NULL);
+ if (sock_recv < 0) {
+ warn("accept()");
+ continue;
+ }
+
+ my_recv(sock_recv, "listener", parentpid);
+ my_send(sock_recv, "listener", parentpid);
+
+ close(sock_recv);
+ }
+ } else {
+ /*
+ * The parent: connect, send data, receive it back, and exit;
+ * build two connections, once using a full connect() API
+ * call, and the second using sendto().
+ */
+
+ /*
+ * Socket to send with.
+ */
+ sock_send = socket(PF_IPX, SOCK_STREAM, 0);
+ if (sock_send < 0) {
+ error = errno;
+ (void)kill(childpid, SIGTERM);
+ errno = error;
+ err(-1, "sock_send = socket(PF_IPX, SOCK_STREAM, 0)");
+ }
+
+ bzero(&sipx_send, sizeof(sipx_send));
+ sipx_send.sipx_len = sizeof(sipx_send);
+ sipx_send.sipx_family = AF_IPX;
+ sipx_send.sipx_addr = ipx_addr(IPX_ENDPOINT);
+
+ if (connect(sock_send, (struct sockaddr *)&sipx_send,
+ sizeof(sipx_send)) < 0) {
+ error = errno;
+ (void)kill(childpid, SIGTERM);
+ errno = error;
+ err(-1, "sock_send = socket(PF_IPX, SOCK_STREAM, 0)");
+ }
+
+ my_send(sock_send, "connector", childpid);
+ my_recv(sock_send, "connector", childpid);
+
+ close(sock_send);
+
+#ifdef SPX_SUPPORTS_SENDTO_WITH_CONNECT
+ sock_send = socket(PF_IPX, SOCK_STREAM, 0);
+ if (sock_send < 0) {
+ error = errno;
+ (void)kill(childpid, SIGTERM);
+ errno = error;
+ err(-1, "sock_send = socket(PF_IPX, SOCK_STREAM, 0)");
+ }
+
+ bzero(&sipx_send, sizeof(sipx_send));
+ sipx_send.sipx_len = sizeof(sipx_send);
+ sipx_send.sipx_family = AF_IPX;
+ sipx_send.sipx_addr = ipx_addr(IPX_ENDPOINT);
+
+ my_sendto(sock_send, "connector", childpid,
+ (struct sockaddr *)&sipx_send, sizeof(sipx_send));
+ my_recv(sock_send, "connector", childpid);
+
+ close(sock_send);
+#endif
+
+ (void)kill(childpid, SIGTERM);
+ }
+
+ return (0);
+}
diff --git a/tools/regression/nfsmmap/Makefile b/tools/regression/nfsmmap/Makefile
new file mode 100644
index 0000000..c731d42
--- /dev/null
+++ b/tools/regression/nfsmmap/Makefile
@@ -0,0 +1,3 @@
+SUBDIR= test1 test2
+
+.include <bsd.subdir.mk>
diff --git a/tools/regression/nfsmmap/README b/tools/regression/nfsmmap/README
new file mode 100644
index 0000000..81c4ad5
--- /dev/null
+++ b/tools/regression/nfsmmap/README
@@ -0,0 +1,20 @@
+These tests are intended to make sure that NFS's use of the
+b_{valid,dirty}{off,end} fields of struct buf is consistent with the
+VM system's use of the underlying VM pages.
+
+Test1:
+ Open the file and write into the file, creating a buf
+ with a valid range and a dirty range
+
+ Fsync, flushing the dirty range
+
+ Mmap and read the whole page. Since only part of the page is
+ valid, the VM system must re-read the invalid parts of the
+ page.
+
+Test2:
+ This is the same as test1 without the fsync. The VM system
+ should first write out the dirty range and then read the rest
+ of the page. This is currently broken since the vnode_pager
+ doesn't use the original buf for its i/o and therefore the
+ information in b_dirtyoff, b_dirtyend is not avalable.
diff --git a/tools/regression/nfsmmap/test1/Makefile b/tools/regression/nfsmmap/test1/Makefile
new file mode 100644
index 0000000..07c3445
--- /dev/null
+++ b/tools/regression/nfsmmap/test1/Makefile
@@ -0,0 +1,27 @@
+# $FreeBSD$
+
+PROG= test1
+NO_MAN=
+NFSSERVER?= herring.nlsystems.com
+CLEANFILES= test1.zeros test1.good test1.data test1.scratch
+
+all: test1 test1.zeros test1.good
+ @cp ${.OBJDIR}/test1.zeros ${.OBJDIR}/test1.data
+ @if [ `hostname` != ${NFSSERVER} ] ; then \
+ ssh ${NFSSERVER} touch ${.OBJDIR}/test1.data; \
+ fi
+ @cd ${.OBJDIR}; ${.OBJDIR}/test1
+ @if cmp -s ${.OBJDIR}/test1.data ${.OBJDIR}/test1.good && \
+ cmp -s ${.OBJDIR}/test1.scratch ${.OBJDIR}/test1.good ; then \
+ echo passed; \
+ else \
+ echo failed; \
+ fi
+
+test1.zeros: test1.zeros.uu
+ uudecode $?
+
+test1.good: test1.good.uu
+ uudecode $?
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/nfsmmap/test1/test1.c b/tools/regression/nfsmmap/test1/test1.c
new file mode 100644
index 0000000..7a7e69f
--- /dev/null
+++ b/tools/regression/nfsmmap/test1/test1.c
@@ -0,0 +1,46 @@
+#include <sys/types.h>
+#include <sys/fcntl.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+int main(int argc, char** argv)
+{
+ int fd, fd2;
+ caddr_t addr;
+ char zeros[4096];
+ char ones[200];
+
+ memset(zeros, 0, sizeof zeros);
+ memset(ones, 1, sizeof ones);
+#if 0
+ unlink("test1.data");
+ fd = open("test1.data", O_RDWR|O_CREAT, 0666);
+ if (fd < 0)
+ err(1, "creating file");
+ if (write(fd, zeros, sizeof zeros) < 0)
+ err(1, "writing zeros");
+ close(fd);
+#endif
+
+ fd = open("test1.data", O_RDWR);
+ if (fd < 0)
+ err(1, "opening file");
+ if (lseek(fd, 600, SEEK_SET) < 0)
+ err(1, "seeking");
+
+ if (write(fd, ones, sizeof ones) < 0)
+ err(1, "writing ones");
+
+ fsync(fd);
+
+ addr = mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
+ if (addr == MAP_FAILED)
+ err(1, "mapping");
+ unlink("test1.scratch");
+ fd2 = open("test1.scratch", O_RDWR|O_CREAT, 0666);
+ if (fd2 < 0)
+ err(1, "creating scratch");
+
+ if (write(fd2, addr, 4096) < 0)
+ err(1, "writing scratch");
+}
diff --git a/tools/regression/nfsmmap/test1/test1.good.uu b/tools/regression/nfsmmap/test1/test1.good.uu
new file mode 100644
index 0000000..633d2d3
--- /dev/null
+++ b/tools/regression/nfsmmap/test1/test1.good.uu
@@ -0,0 +1,95 @@
+begin 644 test1.good
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$`````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+!````
+`
+end
diff --git a/tools/regression/nfsmmap/test1/test1.zeros.uu b/tools/regression/nfsmmap/test1/test1.zeros.uu
new file mode 100644
index 0000000..2332258
--- /dev/null
+++ b/tools/regression/nfsmmap/test1/test1.zeros.uu
@@ -0,0 +1,95 @@
+begin 644 test1.zeros
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+!````
+`
+end
diff --git a/tools/regression/nfsmmap/test2/Makefile b/tools/regression/nfsmmap/test2/Makefile
new file mode 100644
index 0000000..113a3b3
--- /dev/null
+++ b/tools/regression/nfsmmap/test2/Makefile
@@ -0,0 +1,27 @@
+# $FreeBSD$
+
+PROG= test2
+NO_MAN=
+NFSSERVER?= herring.nlsystems.com
+CLEANFILES= test2.zeros test2.good test2.data test2.scratch
+
+all: test2 test2.zeros test2.good
+ @cp ${.OBJDIR}/test2.zeros ${.OBJDIR}/test2.data
+ @if [ `hostname` != ${NFSSERVER} ] ; then \
+ ssh ${NFSSERVER} touch ${.OBJDIR}/test2.data; \
+ fi
+ @cd ${.OBJDIR}; ${.OBJDIR}/test2
+ @if cmp -s ${.OBJDIR}/test2.data ${.OBJDIR}/test2.good && \
+ cmp -s ${.OBJDIR}/test2.scratch ${.OBJDIR}/test2.good ; then \
+ echo passed; \
+ else \
+ echo failed; \
+ fi
+
+test2.zeros: test2.zeros.uu
+ uudecode $?
+
+test2.good: test2.good.uu
+ uudecode $?
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/nfsmmap/test2/test2.c b/tools/regression/nfsmmap/test2/test2.c
new file mode 100644
index 0000000..b3a19e1
--- /dev/null
+++ b/tools/regression/nfsmmap/test2/test2.c
@@ -0,0 +1,44 @@
+#include <sys/types.h>
+#include <sys/fcntl.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+int main(int argc, char** argv)
+{
+ int fd, fd2;
+ caddr_t addr;
+ char zeros[4096];
+ char ones[200];
+
+ memset(zeros, 0, sizeof zeros);
+ memset(ones, 1, sizeof ones);
+#if 0
+ unlink("test2.data");
+ fd = open("test2.data", O_RDWR|O_CREAT, 0666);
+ if (fd < 0)
+ err(1, "creating file");
+ if (write(fd, zeros, sizeof zeros) < 0)
+ err(1, "writing zeros");
+ close(fd);
+#endif
+
+ fd = open("test2.data", O_RDWR);
+ if (fd < 0)
+ err(1, "opening file");
+ if (lseek(fd, 600, SEEK_SET) < 0)
+ err(1, "seeking");
+
+ if (write(fd, ones, sizeof ones) < 0)
+ err(1, "writing ones");
+
+ addr = mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
+ if (addr == MAP_FAILED)
+ err(1, "mapping");
+ unlink("test2.scratch");
+ fd2 = open("test2.scratch", O_RDWR|O_CREAT, 0666);
+ if (fd2 < 0)
+ err(1, "creating scratch");
+
+ if (write(fd2, addr, 4096) < 0)
+ err(1, "writing scratch");
+}
diff --git a/tools/regression/nfsmmap/test2/test2.good.uu b/tools/regression/nfsmmap/test2/test2.good.uu
new file mode 100644
index 0000000..2edf155
--- /dev/null
+++ b/tools/regression/nfsmmap/test2/test2.good.uu
@@ -0,0 +1,95 @@
+begin 644 test2.good
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$`````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+!````
+`
+end
diff --git a/tools/regression/nfsmmap/test2/test2.zeros.uu b/tools/regression/nfsmmap/test2/test2.zeros.uu
new file mode 100644
index 0000000..9be013a
--- /dev/null
+++ b/tools/regression/nfsmmap/test2/test2.zeros.uu
@@ -0,0 +1,95 @@
+begin 644 test2.zeros
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+!````
+`
+end
diff --git a/tools/regression/p1003_1b/Makefile b/tools/regression/p1003_1b/Makefile
new file mode 100644
index 0000000..85db354
--- /dev/null
+++ b/tools/regression/p1003_1b/Makefile
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+PROG=p1003_1b
+
+SRCS=\
+ fifo.c \
+ main.c \
+ memlock.c \
+ prutil.c \
+ p26.c \
+ sched.c \
+ yield.c
+
+NO_MAN=
+
+CFLAGS+=-DNO_MEMLOCK
+.include <bsd.prog.mk>
diff --git a/tools/regression/p1003_1b/README b/tools/regression/p1003_1b/README
new file mode 100644
index 0000000..e0b7037
--- /dev/null
+++ b/tools/regression/p1003_1b/README
@@ -0,0 +1,14 @@
+$FreeBSD$
+
+p1003_1b: Regression tests for the scheduling facilities.
+The following should always work as of the release of 4.0:
+
+p1003_1b fifo : Check that the FIFO scheduler seems to work.
+p1003_1b p26 : Check that we support the expected features.
+p1003_1b sched: Check that schedule switching seems to work.
+p1003_1b yield: Check that yielding runs the expected process.
+
+As of today "p1003_1b yield" doesn't work. I have a minimal set
+of patches I'm waiting for approval to commit.
+
+Peter dufault@freebsd.org
diff --git a/tools/regression/p1003_1b/fifo.c b/tools/regression/p1003_1b/fifo.c
new file mode 100644
index 0000000..455f7f9
--- /dev/null
+++ b/tools/regression/p1003_1b/fifo.c
@@ -0,0 +1,227 @@
+/*
+ * Copyright (c) 1996 - 2000
+ * HD Associates, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by HD Associates, Inc
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <err.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/time.h>
+#include <sched.h>
+#include <signal.h>
+
+volatile int ticked;
+#define CAN_USE_ALARMS
+
+#ifdef CAN_USE_ALARMS
+void tick(int arg)
+{
+ ticked = 1;
+}
+#endif
+
+/* Fifo: Verify that fifo and round-robin scheduling seem to work.
+ *
+ * This tests:
+ * 1. That sched_rr_get_interval seems to work;
+ * 2. That FIFO scheduling doesn't seeem to be round-robin;
+ * 3. That round-robin scheduling seems to work.
+ *
+ */
+static pid_t child;
+static void tidyup(void)
+{
+ if (child)
+ kill(child, SIGHUP);
+}
+
+static double
+tvsub(const struct timeval *a, const struct timeval *b)
+{
+ long sdiff;
+ long udiff;
+
+ sdiff = a->tv_sec - b->tv_sec;
+ udiff = a->tv_usec - b->tv_usec;
+
+ return (double)(sdiff * 1000000 + udiff) / 1e6;
+}
+
+int fifo(int argc, char *argv[])
+{
+ int e = 0;
+ volatile long *p, pid;
+ int i;
+ struct sched_param fifo_param;
+ struct timespec interval;
+#define MAX_RANAT 32
+ struct timeval ranat[MAX_RANAT];
+
+#ifdef CAN_USE_ALARMS
+ static struct itimerval itimerval;
+#endif
+
+ /* What is the round robin interval?
+ */
+
+ if (sched_rr_get_interval(0, &interval) == -1) {
+ perror("sched_rr_get_interval");
+ exit(errno);
+ }
+
+#ifdef CAN_USE_ALARMS
+ signal(SIGALRM, tick);
+#endif
+
+ fifo_param.sched_priority = 1;
+
+ p = (long *)mmap(0, sizeof(*p),
+ PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED|MAP_INHERIT, -1, 0);
+
+ if (p == (long *)-1)
+ err(errno, "mmap");
+
+ *p = 0;
+
+ if (sched_setscheduler(0, SCHED_FIFO, &fifo_param) == -1)
+ {
+ perror("sched_setscheduler");
+ return -1;
+ }
+
+ pid = getpid();
+
+ if ((child = fork()) == 0)
+ {
+ /* Child process. Just keep setting the pointer to our
+ * PID. The parent will kill us when it wants to.
+ */
+
+ pid = getpid();
+ while (1)
+ *p = pid;
+ }
+ else
+ {
+ atexit(tidyup);
+ *p = pid;
+
+
+ ticked = 0;
+
+#ifdef CAN_USE_ALARMS
+ /* Set an alarm for 250 times the round-robin interval.
+ * Then we will verify that a similar priority process
+ * will not run when we are using the FIFO scheduler.
+ */
+ itimerval.it_value.tv_usec = interval.tv_nsec / (1000 / 250);
+
+ itimerval.it_value.tv_sec = itimerval.it_value.tv_usec / 1000000;
+ itimerval.it_value.tv_usec %= 1000000;
+
+
+ if (setitimer(ITIMER_REAL, &itimerval, 0) == -1) {
+ perror("setitimer");
+ exit(errno);
+ }
+#endif
+
+
+ gettimeofday(ranat, 0);
+ i = 1;
+ while (!ticked && i < MAX_RANAT)
+ if (*p == child) {
+ gettimeofday(ranat + i, 0);
+ *p = 0;
+ e = -1;
+ i++;
+ }
+
+ if (e) {
+ int j;
+
+ fprintf(stderr,
+ "SCHED_FIFO had erroneous context switches:\n");
+ for (j = 1; j < i; j++) {
+ fprintf(stderr, "%d %g\n", j,
+ tvsub(ranat + j, ranat + j - 1));
+ }
+ return e;
+ }
+
+ /* Switch to the round robin scheduler and the child
+ * should run within twice the interval.
+ */
+ if (sched_setscheduler(child, SCHED_RR, &fifo_param) == -1 ||
+ sched_setscheduler(0, SCHED_RR, &fifo_param) == -1)
+ {
+ perror("sched_setscheduler");
+ return -1;
+ }
+
+ e = -1;
+
+ ticked = 0;
+
+#ifdef CAN_USE_ALARMS
+
+ /* Now we do want to see it run. But only set
+ * the alarm for twice the interval:
+ */
+ itimerval.it_value.tv_usec = interval.tv_nsec / 500;
+
+ if (setitimer(ITIMER_REAL, &itimerval, 0) == -1) {
+ perror("setitimer");
+ exit(errno);
+ }
+#endif
+
+ for (i = 0; !ticked; i++)
+ if (*p == child) {
+ e = 0;
+ break;
+ }
+
+ if (e)
+ fprintf(stderr,"Child never ran when it should have.\n");
+ }
+
+ exit(e);
+}
+
+#ifdef STANDALONE_TESTS
+int main(int argc, char *argv[]) { return fifo(argc, argv); }
+#endif
diff --git a/tools/regression/p1003_1b/main.c b/tools/regression/p1003_1b/main.c
new file mode 100644
index 0000000..0e87c6c
--- /dev/null
+++ b/tools/regression/p1003_1b/main.c
@@ -0,0 +1,78 @@
+/* $FreeBSD$ */
+#include <stdio.h>
+
+int fifo(int argc, char *argv[]);
+int memlock(int argc, char *argv[]);
+int p26(int argc, char *argv[]);
+int sched(int argc, char *argv[]);
+int yield(int argc, char *argv[]);
+
+static struct {
+ const char *t;
+ int (*f)(int, char *[]);
+ int works;
+} tab[] = {
+ { "fifo", fifo, 1 },
+ { "memlock", memlock, 0 },
+ { "p26", p26, 1 },
+ { "sched", sched, 1 },
+ { "yield", yield, 1 },
+};
+
+#define N(T) (sizeof (T)/ sizeof(T[0]))
+
+static int usage(int argc, char *argv[])
+{
+ int i;
+ if (argc > 1)
+ fprintf(stderr, "%s is unknown\n", argv[1]);
+
+ fprintf(stderr, "usage: %s [-a] or one of [", argv[0]);
+ for (i = 0; i < (sizeof(tab) / sizeof(tab[0])); i++)
+ fprintf(stderr, "%s%s", (i)? " | " : "", tab[i].t);
+ fprintf(stderr, "]\n");
+
+ return -1;
+}
+
+int main(int argc, char *argv[])
+{
+ int i;
+
+ if (argc == 2 && strcmp(argv[1], "-a") == 0) {
+#if 1
+ fprintf(stderr,
+ "-a should but doesn't really work"
+ " (my notes say \"because things detach\");\n"
+ "meanwhile do these individual tests and look"
+ " for a non-zero exit code:\n");
+ for (i = 0; i < N(tab); i++)
+ if (tab[i].works)
+ fprintf(stderr, "p1003_1b %s\n", tab[i].t);
+ return -1;
+#else
+ {
+ int r;
+ for (i = 0; i < N(tab); i++) {
+ if (tab[i].works) {
+ if ( (r =
+ (*tab[i].f)(argc - 1, argv + 1)) ) {
+ fprintf(stderr,
+ "%s failed\n", tab[i].t);
+ return r;
+ }
+ }
+ }
+ return 0;
+ }
+#endif
+ }
+
+ if (argc > 1) {
+ for (i = 0; i < N(tab); i++)
+ if (strcmp(tab[i].t, argv[1]) == 0)
+ return (*tab[i].f)(argc - 1, argv + 1);
+ }
+
+ return usage(argc, argv);
+}
diff --git a/tools/regression/p1003_1b/memlock.c b/tools/regression/p1003_1b/memlock.c
new file mode 100644
index 0000000..b55b405
--- /dev/null
+++ b/tools/regression/p1003_1b/memlock.c
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 1996 - 1999
+ * HD Associates, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by HD Associates, Inc
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+#include <unistd.h>
+#include <stdio.h>
+#include <errno.h>
+#include <sys/mman.h>
+
+#include "prutil.h"
+
+int memlock(int argc, char *argv[])
+{
+ int e = 0;
+
+ /* Is memory locking configured?
+ */
+ errno = 0;
+ if (sysconf(_SC_MEMLOCK) == -1) {
+ if (errno != 0) {
+ /* This isn't valid - may be a standard violation
+ */
+ quit("(should not happen) sysconf(_SC_MEMLOCK)");
+ }
+ else {
+ fprintf(stderr,
+ "Memory locking is not supported in this environment.\n");
+ e = -1;
+ }
+ }
+
+ /* Lock yourself in memory:
+ */
+ if (mlockall(MCL_CURRENT | MCL_FUTURE) == -1) {
+ perror("mlockall(MCL_CURRENT | MCL_FUTURE)");
+ e = errno;
+ }
+ else if (munlockall() == -1) {
+ perror("munlockall");
+ e = errno;
+ }
+
+ return e;
+}
+
+#ifdef NO_MEMLOCK
+int mlockall(int flags)
+{
+ return EOPNOTSUPP;
+}
+
+int munlockall(void)
+{
+ return EOPNOTSUPP;
+}
+
+
+#endif
+
+#ifdef STANDALONE_TESTS
+int main(int argc, char *argv[]) { return memlock(argc, argv); }
+#endif
diff --git a/tools/regression/p1003_1b/p26.c b/tools/regression/p1003_1b/p26.c
new file mode 100644
index 0000000..538deaf
--- /dev/null
+++ b/tools/regression/p1003_1b/p26.c
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 1996-1999
+ * HD Associates, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by HD Associates, Inc
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+#define _POSIX_SOURCE
+#define _POSIX_C_SOURCE 199309L
+#include <unistd.h>
+#include <stdio.h>
+
+int p26(int ac, char *av[])
+{
+ int ret = 0;
+
+ #ifndef _POSIX_VERSION
+ printf("POSIX is not supported.\n");
+ ret = -1;
+ #else /* _POSIX_VERSION */
+
+ #if (_POSIX_VERSION == 198808L)
+ printf("POSIX.1 is supported but not POSIX.1B (FIPS 151-1)\n");
+ #elif (_POSIX_VERSION == 199009L)
+ printf("POSIX.1 is supported but not POSIX.1B (FIPS 151-2)\n");
+ #elif (_POSIX_VERSION >= 199309L)
+ printf("POSIX.1 and POSIX.1B are supported.\n");
+ #else
+ printf("_POSIX_VERSION (%ld) not 198808, 199009, or >= 199309.\n",
+ _POSIX_VERSION);
+ ret = -1;
+ #endif
+
+ #endif /* _POSIX_VERSION */
+ return ret;
+}
+#ifdef STANDALONE_TESTS
+int main(int argc, char *argv[]) { return p26(argc, argv); }
+#endif
diff --git a/tools/regression/p1003_1b/prutil.c b/tools/regression/p1003_1b/prutil.c
new file mode 100644
index 0000000..e0e3d6f
--- /dev/null
+++ b/tools/regression/p1003_1b/prutil.c
@@ -0,0 +1,61 @@
+#include <errno.h>
+#include <unistd.h>
+#include <sched.h>
+#include <stdio.h>
+
+#include <err.h>
+#include <sysexits.h>
+#include "prutil.h"
+
+/*
+ * $FreeBSD$
+ */
+void quit(const char *text)
+{
+ err(errno, text);
+}
+
+char *sched_text(int scheduler)
+{
+ switch(scheduler)
+ {
+ case SCHED_FIFO:
+ return "SCHED_FIFO";
+
+ case SCHED_RR:
+ return "SCHED_RR";
+
+ case SCHED_OTHER:
+ return "SCHED_OTHER";
+
+ default:
+ return "Illegal scheduler value";
+ }
+}
+
+int sched_is(int line, struct sched_param *p, int shouldbe)
+{
+ int scheduler;
+ struct sched_param param;
+
+ /* What scheduler are we running now?
+ */
+ errno = 0;
+ scheduler = sched_getscheduler(0);
+ if (sched_getparam(0, &param))
+ quit("sched_getparam");
+
+ if (p)
+ *p = param;
+
+ if (shouldbe != -1 && scheduler != shouldbe)
+ {
+ fprintf(stderr,
+ "At line %d the scheduler should be %s yet it is %s.\n",
+ line, sched_text(shouldbe), sched_text(scheduler));
+
+ exit(-1);
+ }
+
+ return scheduler;
+}
diff --git a/tools/regression/p1003_1b/prutil.h b/tools/regression/p1003_1b/prutil.h
new file mode 100644
index 0000000..3387b99
--- /dev/null
+++ b/tools/regression/p1003_1b/prutil.h
@@ -0,0 +1,14 @@
+#ifndef _PRUTIL_H_
+#define _PRUTIL_H_
+
+/*
+ * $FreeBSD$
+ */
+
+struct sched_param;
+
+void quit(const char *);
+char *sched_text(int);
+int sched_is(int line, struct sched_param *, int);
+
+#endif /* _PRUTIL_H_ */
diff --git a/tools/regression/p1003_1b/sched.c b/tools/regression/p1003_1b/sched.c
new file mode 100644
index 0000000..bd978f8
--- /dev/null
+++ b/tools/regression/p1003_1b/sched.c
@@ -0,0 +1,294 @@
+/*
+ * Copyright (c) 1996-1999
+ * HD Associates, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by HD Associates, Inc
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * $FreeBSD$
+ *
+ */
+
+/* XXX: The spec says that if _POSIX_C_SOURCE is defined then
+ * _POSIX_SOURCE is ignored. However, this is similar to
+ * the code in the O'Reilly "POSIX.4" book
+ */
+
+#define _POSIX_VERSION 199309L
+#define _POSIX_SOURCE
+#define _POSIX_C_SOURCE 199309L
+
+#include <unistd.h>
+#include <stdlib.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+
+#include <sched.h>
+
+#include "prutil.h"
+
+static FILE *verbose;
+
+static void
+checkpris(int sched)
+{
+ int smin;
+ int smax;
+
+ errno = 0;
+
+ if ( (smin = sched_get_priority_min(sched)) == -1 && errno)
+ quit("sched_get_priority_min");
+
+ if ( (smax = sched_get_priority_max(sched)) == -1 && errno)
+ quit("sched_get_priority_max");
+
+ if (smax - smin + 1 < 32 || smax < smin) {
+ fprintf(stderr, "Illegal priority range for %s: %d to %d\n",
+ sched_text(sched), smin, smax);
+ exit(-1);
+ }
+
+ if (verbose)
+ fprintf(verbose, "%12s: sched_min %2d sched_max %2d\n",
+ sched_text(sched), smin, smax);
+}
+
+/* Set "try_anyway" to quit if you don't want to go on when
+ * it doesn't look like something should work.
+ */
+static void try_anyway(const char *s)
+{
+ fputs(s, stderr);
+ fprintf(stderr, "(trying anyway)\n");
+ errno = 0;
+}
+
+static void q(int line, int code, const char *text)
+{
+ if (code == -1)
+ {
+ fprintf(stderr, "Error at line %d:\n", line);
+ perror(text);
+ exit(errno);
+ }
+}
+
+int sched(int ac, char *av[])
+{
+ int fifo_schedmin, fifo_schedmax;
+ int i;
+ struct sched_param rt_param;
+ int n_instances = 10;
+ int sched;
+
+ verbose = 0;
+
+#if _POSIX_VERSION < 199309
+ try_anyway("The _POSIX_VERSION predates P1003.1B\n");
+#endif
+
+#if !defined(_POSIX_PRIORITY_SCHEDULING)
+ try_anyway(
+ "The environment does not claim to support Posix scheduling.\n");
+#endif
+
+ /* Is priority scheduling configured?
+ */
+ errno = 0;
+ if (sysconf(_SC_PRIORITY_SCHEDULING) == -1) {
+ if (errno != 0) {
+ /* This isn't valid - may be a standard violation
+ */
+ quit("(should not happen) sysconf(_SC_PRIORITY_SCHEDULING)");
+ }
+ else {
+ try_anyway(
+ "The environment does not have run-time "
+ "support for Posix scheduling.\n");
+ }
+ }
+
+ /* Check that the priorities seem reasonable.
+ */
+
+ checkpris(SCHED_FIFO);
+ checkpris(SCHED_RR);
+ checkpris(SCHED_OTHER);
+
+/* BSD extensions?
+ */
+#if defined(SCHED_IDLE)
+ checkpris(SCHED_IDLE);
+#endif
+
+ fifo_schedmin = sched_get_priority_min(SCHED_FIFO);
+ fifo_schedmax = sched_get_priority_max(SCHED_FIFO);
+
+ /* Make sure we can do some basic schedule switching:
+ */
+ {
+ struct sched_param orig_param, shouldbe;
+ int orig_scheduler = sched_is(__LINE__, &orig_param, -1);
+
+ if (verbose)
+ fprintf(verbose,
+ "The original scheduler is %s and the priority is %d.\n",
+ sched_text(orig_scheduler), orig_param.sched_priority);
+
+ /* Basic check: Try to set current settings:
+ */
+ q(__LINE__, sched_setscheduler(0, orig_scheduler, &orig_param),
+ "sched_setscheduler: Can't set original scheduler");
+
+ rt_param.sched_priority = fifo_schedmin;
+
+ q(__LINE__, sched_setscheduler(0, SCHED_FIFO, &rt_param),
+ "sched_setscheduler SCHED_FIFO");
+
+ (void)sched_is(__LINE__, 0, SCHED_FIFO);
+
+ q(__LINE__, sched_getparam(0, &shouldbe), "sched_getparam");
+
+ if (shouldbe.sched_priority != fifo_schedmin)
+ quit("sched_setscheduler wrong priority (min)");
+
+ rt_param.sched_priority = fifo_schedmin;
+
+ q(__LINE__, sched_setparam(0, &rt_param),
+ "sched_setparam to fifo_schedmin");
+
+ rt_param.sched_priority = fifo_schedmin + 1;
+
+ q(__LINE__, sched_setparam(0, &rt_param),
+ "sched_setparam to fifo_schedmin + 1");
+
+ q(__LINE__, sched_getparam(0, &shouldbe),
+ "sched_getparam");
+
+ if (shouldbe.sched_priority != fifo_schedmin + 1)
+ quit("sched_setscheduler wrong priority (min + 1)");
+
+ q(__LINE__, sched_setscheduler(0, SCHED_RR, &rt_param),
+ "sched_setscheduler SCHED_RR");
+
+ (void)sched_is(__LINE__, 0, SCHED_RR);
+
+ q(__LINE__, sched_setscheduler(0, orig_scheduler, &orig_param),
+ "sched_setscheduler restoring original scheduler");
+
+ (void)sched_is(__LINE__, 0, orig_scheduler);
+ }
+
+
+ {
+#define NAM "P1003_1b_schedXXXX"
+ char nam[L_tmpnam];
+ int fd;
+ pid_t p;
+ pid_t *lastrun;
+
+ strcpy(nam, NAM);
+ if (tmpnam(nam) != nam)
+ q(__LINE__, errno, "tmpnam " NAM);
+ q(__LINE__, (fd = open(nam, O_RDWR|O_CREAT, 0666)),
+ "open " NAM);
+
+ (void)unlink(nam);
+
+ p = (pid_t)0;
+
+ write(fd, &p, sizeof(p));
+
+ q(__LINE__, (int)(lastrun = mmap(0, sizeof(*lastrun), PROT_READ|PROT_WRITE,
+ MAP_SHARED, fd, 0)), "mmap");
+
+ /* Set our priority at the highest:
+ */
+ sched = SCHED_FIFO;
+ rt_param.sched_priority = fifo_schedmax;
+ q(__LINE__, sched_setscheduler(0, sched, &rt_param),
+ "sched_setscheduler sched");
+
+ for (i = 0; i < n_instances; i++)
+ {
+ pid_t me;
+
+ /* XXX This is completely bogus. The children never run.
+ */
+ if ((me = fork()) != 0)
+ {
+ /* Parent.
+ */
+ (void)sched_is(__LINE__, 0, sched);
+
+ /* Lower our priority:
+ */
+ rt_param.sched_priority--;
+
+ q(__LINE__, sched_setscheduler(0, sched, &rt_param),
+ "sched_setscheduler sched");
+
+ while (1)
+ {
+ q(__LINE__, sched_getparam(0, &rt_param), "sched_getparam");
+
+ rt_param.sched_priority--;
+
+
+ if (rt_param.sched_priority < fifo_schedmin)
+ exit(0);
+
+ *lastrun = me;
+ q(__LINE__, sched_setparam(0, &rt_param), "sched_setparam");
+
+ if (*lastrun == me)
+ {
+ /* The child will run twice
+ * at the end:
+ */
+ if (!me || rt_param.sched_priority != 0)
+ {
+ fprintf(stderr,
+ "ran process %ld twice at priority %d\n",
+ (long)me, rt_param.sched_priority + 1);
+ exit(-1);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+#ifdef STANDALONE_TESTS
+int main(int argc, char *argv[]) { return sched(argc, argv); }
+#endif
diff --git a/tools/regression/p1003_1b/yield.c b/tools/regression/p1003_1b/yield.c
new file mode 100644
index 0000000..ac31a99
--- /dev/null
+++ b/tools/regression/p1003_1b/yield.c
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 1996-1999
+ * HD Associates, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by HD Associates, Inc
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * $FreeBSD$
+ *
+ */
+#include <sys/types.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <err.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sched.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+
+#include "prutil.h"
+
+/* buzz: busy wait a random amount of time.
+ */
+static void buzz(int n)
+{
+ volatile int i;
+ int m = random() & 0x0ffff;
+ for (i = 0; i < m; i++)
+ ;
+}
+
+/* Yield: Verify that "sched_yield" works for the FIFO case.
+ * This runs several processes and verifies that the yield seems
+ * to permit the next one on the ready queue to run.
+ */
+int yield(int argc, char *argv[])
+{
+ volatile int *p;
+ int i;
+ int nslaves, n;
+ int master, slave;
+ pid_t youngest = !0; /* Our youngest child */
+ struct sched_param set, got;
+ int nloops = 1000;
+
+ errno = 0;
+
+ set.sched_priority = sched_get_priority_max(SCHED_FIFO);
+ if (set.sched_priority == -1 && errno) {
+ perror("sched_get_priority_max");
+ exit(errno);
+ }
+
+ if (argc == 1)
+ n = nslaves = 10;
+
+ else if (argc != 2) {
+ fprintf(stderr, "usage: prog [n_instances]\n");
+ exit(-1);
+ }
+ else
+ n = nslaves = atoi(argv[1]);
+
+ p = (int *)mmap(0, sizeof(int),
+ PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED|MAP_INHERIT, -1, 0);
+
+ if (p == (int *)-1)
+ err(errno, "mmap");
+
+ *p = 0;
+
+ if (sched_setscheduler(0, SCHED_FIFO, &set) == -1)
+ err(errno, "sched_setscheduler");
+
+ /* I better still be SCHED_FIFO and RT_PRIO_MAX:
+ */
+ (void)sched_is(__LINE__, &got, SCHED_FIFO);
+ if (got.sched_priority != set.sched_priority) {
+ fprintf(stderr, "line %d: scheduler screwup\n",
+ __LINE__);
+ exit(-1);
+ }
+
+ slave = 0;
+ master = 1;
+
+ /* Fork off the slaves.
+ */
+ for (i = 0; i < nslaves; i++) {
+ if ((youngest = fork()) == 0) {
+ /* I better still be SCHED_FIFO and RT_PRIO_MAX:
+ */
+ (void)sched_is(__LINE__, &got, SCHED_FIFO);
+
+ if (got.sched_priority != set.sched_priority) {
+ fprintf(stderr, "line %d: scheduler screwup\n",
+ __LINE__);
+ exit(-1);
+ }
+
+ master = 0; /* I'm a slave */
+ slave = i + 1; /* With this flag */
+ *p = slave; /* And I live */
+ break;
+ }
+ }
+
+ if (master) {
+ /* If we conform the slave processes haven't run yet.
+ * The master must yield to let the first slave run.
+ */
+ if (*p != 0) {
+ fprintf(stderr,
+ "Error at line %d: Writer %d has run\n", __LINE__, *p);
+ exit(-1);
+ }
+ }
+
+ /* Now the master yields, the first slave runs, and yields,
+ * next runs, yields, ...
+ *
+ * So the master should get through this first.
+ */
+
+ if (sched_yield() == -1)
+ err(errno, "sched_yield");
+
+ if (master) {
+ int status;
+
+ /* The final slave process should be the last one started.
+ */
+ if (*p != nslaves) {
+ fprintf(stderr,
+ "Error at line %d: Final slave is %d not %d.\n",
+ __LINE__, *p, nslaves);
+ exit(-1);
+ }
+
+ /* Wait for our youngest to exit:
+ */
+ waitpid(youngest, &status, 0);
+
+ exit(WEXITSTATUS(status)); /* Let the slaves continue */
+ }
+
+ /* Now the first one has started up.
+ */
+ for (i = 0; i < nloops; i++) {
+ if (((*p) % nslaves) !=
+ ((slave + nslaves - 1) % nslaves)) {
+ fprintf(stderr, "%d ran before %d on iteration %d.\n",
+ *p, slave, i);
+ exit(-1);
+ }
+ *p = slave;
+
+ /* Delay some random amount of time.
+ */
+ buzz(slave);
+
+ if (sched_yield() == -1)
+ err(errno, "sched_yield");
+ }
+
+ exit(0);
+}
+#ifdef STANDALONE_TESTS
+int main(int argc, char *argv[]) { return yield(argc, argv); }
+#endif
diff --git a/tools/regression/pipe/Makefile b/tools/regression/pipe/Makefile
new file mode 100644
index 0000000..cf73253
--- /dev/null
+++ b/tools/regression/pipe/Makefile
@@ -0,0 +1,16 @@
+#
+# $FreeBSD$
+#
+# "make" then "make regress".
+#
+PROG= bigpipetest
+NO_MAN=
+
+regress:
+ @if ./bigpipetest; then \
+ echo "PASS"; \
+ else \
+ echo "FAIL"; \
+ fi
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/pipe/bigpipetest.c b/tools/regression/pipe/bigpipetest.c
new file mode 100644
index 0000000..c5983fa
--- /dev/null
+++ b/tools/regression/pipe/bigpipetest.c
@@ -0,0 +1,82 @@
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/select.h>
+#include <string.h>
+#include <errno.h>
+
+#define BIG_PIPE_SIZE 64*1024 /* From sys/pipe.h */
+
+/*
+ * Test for the non-blocking big pipe bug (write(2) returning
+ * EAGAIN while select(2) returns the descriptor as ready for write).
+ *
+ * $FreeBSD$
+ */
+
+void write_frame(int fd, char *buf, unsigned long buflen)
+{
+ fd_set wfd;
+ int i;
+
+ while (buflen) {
+ FD_ZERO(&wfd);
+ FD_SET(fd, &wfd);
+ i = select(fd+1, NULL, &wfd, NULL, NULL);
+ if (i < 0) {
+ perror("select");
+ exit(1);
+ }
+ if (i != 1) {
+ fprintf(stderr, "select returned unexpected value %d\n", i);
+ exit(1);
+ }
+ i = write(fd, buf, buflen);
+ if (i < 0) {
+ if (errno != EAGAIN)
+ perror("write");
+ exit(1);
+ }
+ buf += i;
+ buflen -= i;
+ }
+}
+
+int main()
+{
+ char buf[BIG_PIPE_SIZE]; /* any value over PIPE_SIZE should do */
+ int i, flags, fd[2];
+
+ printf("1..1\n");
+
+ if (pipe(fd) < 0) { perror("pipe"); exit(1); }
+
+ flags = fcntl(fd[1], F_GETFL);
+ if (flags == -1 || fcntl(fd[1], F_SETFL, flags|O_NONBLOCK) == -1) {
+ perror("fcntl");
+ exit(1);
+ }
+
+ switch (fork()) {
+ case -1:
+ perror("fork");
+ exit(1);
+ case 0:
+ close(fd[1]);
+ for (;;) {
+ i = read(fd[0], buf, 256); /* any small size should do */
+ if (i == 0) break;
+ if (i < 0) { perror("read"); exit(1); }
+ }
+ exit(0);
+ default:
+ break;
+ }
+
+ close(fd[0]);
+ memset(buf, 0, sizeof buf);
+ for (i = 0; i < 1000; i++) write_frame(fd[1], buf, sizeof buf);
+ printf("ok 1\n");
+ exit(0);
+}
diff --git a/tools/regression/pipe/bigpipetest.t b/tools/regression/pipe/bigpipetest.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/pipe/bigpipetest.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/pipe/pipe-fstatbug.c b/tools/regression/pipe/pipe-fstatbug.c
new file mode 100644
index 0000000..ed038c2
--- /dev/null
+++ b/tools/regression/pipe/pipe-fstatbug.c
@@ -0,0 +1,82 @@
+/*
+Copyright (C) 2004 Michael J. Silbersack. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+*/
+
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+/*
+ * $FreeBSD$
+ * The goal of this program is to see if fstat reports the correct
+ * data count for a pipe. Prior to revision 1.172 of sys_pipe.c,
+ * 0 would be returned once the pipe entered direct write mode.
+ *
+ * Linux (2.6) always returns zero, so it's not a valuable platform
+ * for comparison.
+ */
+
+int main (void)
+{
+char buffer[32768], buffer2[32768];
+int desc[2];
+int error, successes;
+struct stat status;
+pid_t new_pid;
+
+error = pipe(desc);
+
+if (error)
+ err(0, "Couldn't allocate fds\n");
+
+new_pid = fork();
+
+if (new_pid == 0) {
+ write(desc[1], &buffer, 145);
+ usleep(1000000);
+ write(desc[1], &buffer, 2048);
+ usleep(1000000);
+ write(desc[1], &buffer, 4096);
+ usleep(1000000);
+ write(desc[1], &buffer, 8191);
+ usleep(1000000);
+ write(desc[1], &buffer, 8192);
+ usleep(1000000);
+} else {
+ while (successes < 5) {
+ usleep(3000);
+ fstat(desc[0], &status);
+ error = read(desc[0], &buffer2, 32768);
+ if (status.st_size != error)
+ err(0, "FAILURE: stat size %d read size %d\n", (int)status.st_size, error);
+ if (error > 0) {
+ printf("SUCCESS at stat size %d read size %d\n", (int)status.st_size, error);
+ successes++;
+ /* Sleep to avoid the natural race in reading st_size. */
+ usleep(1000000);
+ }
+ }
+}
+
+}
diff --git a/tools/regression/pipe/pipe-overcommit1.c b/tools/regression/pipe/pipe-overcommit1.c
new file mode 100644
index 0000000..c468658
--- /dev/null
+++ b/tools/regression/pipe/pipe-overcommit1.c
@@ -0,0 +1,47 @@
+/*-
+ * Copyright (C) 2005 Michael J. Silbersack <silby@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice(s), this list of conditions and the following disclaimer as
+ * the first lines of this file unmodified other than the possible
+ * addition of one or more copyright notices.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice(s), this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/*
+ * $FreeBSD$
+ * This program just allocates as many pipes as it can to ensure
+ * that using up all pipe memory doesn't cause a panic.
+ */
+
+int main (void)
+
+{
+ int i, returnval;
+ int pipes[10000];
+ for (i = 0; i < 10000; i++) {
+ returnval = pipe(&pipes[i]);
+ }
+ printf("PASS\n");
+}
diff --git a/tools/regression/pipe/pipe-overcommit2.c b/tools/regression/pipe/pipe-overcommit2.c
new file mode 100644
index 0000000..5979585
--- /dev/null
+++ b/tools/regression/pipe/pipe-overcommit2.c
@@ -0,0 +1,69 @@
+/*-
+ * Copyright (C) 2005 Michael J. Silbersack <silby@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice(s), this list of conditions and the following disclaimer as
+ * the first lines of this file unmodified other than the possible
+ * addition of one or more copyright notices.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice(s), this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+
+/*
+ * $FreeBSD$
+ * This program tests how sys_pipe.c handles the case where there
+ * is ample memory to allocate a pipe, but the file descriptor
+ * limit for that user has been exceeded.
+ */
+
+int main (int argc, void *argv[])
+
+{
+ int i, returnval, lastfd;
+ int pipes[10000];
+
+ for (i = 0; i < 100000; i++) {
+ returnval = open(argv[0], O_RDONLY);
+ if (returnval < 1)
+ break; /* All descriptors exhausted. */
+ else
+ lastfd = returnval;
+ }
+
+ /* First falloc failure case in sys_pipe.c:pipe() */
+ for (i = 0; i < 1000; i++) {
+ returnval = pipe(&pipes[i]);
+ }
+
+ /*
+ * Free just one FD so that the second falloc failure
+ * case will occur.
+ */
+ close(lastfd);
+
+ for (i = 0; i < 1000; i++) {
+ returnval = pipe(&pipes[i]);
+ }
+ printf("PASS\n");
+}
diff --git a/tools/regression/pipe/pipe-reverse.c b/tools/regression/pipe/pipe-reverse.c
new file mode 100644
index 0000000..f4ae167
--- /dev/null
+++ b/tools/regression/pipe/pipe-reverse.c
@@ -0,0 +1,112 @@
+/*
+Copyright (C) 2004 Michael J. Silbersack. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+*/
+
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+/*
+ * $FreeBSD$
+ * This program simply tests writing through the reverse direction of
+ * a pipe. Nothing too fancy, it's only needed because most pipe-using
+ * programs never touch the reverse direction (it doesn't exist on
+ * Linux.)
+ */
+
+int main (void)
+{
+char buffer[65535], buffer2[65535];
+int desc[2];
+int buggy, error, i, successes, total;
+struct stat status;
+pid_t new_pid;
+
+buggy = 0;
+
+error = pipe(desc);
+
+if (error)
+ err(0, "Couldn't allocate fds\n");
+
+buffer[0] = 'A';
+
+for (i = 0; i < 65535; i++) {
+ buffer[i] = buffer[i - 1] + 1;
+ if (buffer[i] > 'Z')
+ buffer[i] = 'A';
+ }
+
+new_pid = fork();
+
+if (new_pid == 0) {
+ error = write(desc[0], &buffer, 4096);
+ total += error;
+ error = write(desc[0], &buffer[total], 4096);
+ total += error;
+ error = write(desc[0], &buffer[total], 4096);
+ total += error;
+ error = write(desc[0], &buffer[total], 4096);
+ total += error;
+ error = write(desc[0], &buffer[total], 4096);
+ total += error;
+ error = write(desc[0], &buffer[total], 4096);
+ total += error;
+ error = write(desc[0], &buffer[total], 4096);
+ total += error;
+ error = write(desc[0], &buffer[total], 4096);
+ total += error;
+ printf("Wrote %d bytes, sleeping\n", total);
+ usleep(1000000);
+ error = write(desc[0], &buffer[total], 4096);
+ total += error;
+ error = write(desc[0], &buffer[total], 4096);
+ total += error;
+ printf("Wrote another 8192 bytes, %d total, done\n", total);
+} else {
+ usleep(500000);
+ error = read(desc[1], &buffer2, 32768);
+ total += error;
+ printf("Read %d bytes, going back to sleep\n", error);
+ usleep(1000000);
+ error = read(desc[1], &buffer2[total], 8192);
+ total += error;
+ printf("Read %d bytes, done\n", error);
+
+ for (i = 0; i < total; i++) {
+ if (buffer[i] != buffer2[i]) {
+ buggy = 1;
+ printf("Location %d input: %hhx output: %hhx\n",
+ i, buffer[i], buffer2[i]);
+ }
+ }
+
+if ((buggy == 1) || (total != 40960))
+ printf("FAILURE\n");
+else
+ printf("SUCCESS\n");
+
+}
+
+}
diff --git a/tools/regression/pipe/pipe-wraparound.c b/tools/regression/pipe/pipe-wraparound.c
new file mode 100644
index 0000000..ab673e9
--- /dev/null
+++ b/tools/regression/pipe/pipe-wraparound.c
@@ -0,0 +1,102 @@
+/*
+Copyright (C) 2004 Michael J. Silbersack. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+*/
+
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+/*
+ * $FreeBSD$
+ * This program tests to make sure that wraparound writes and reads
+ * are working, assuming that 16K socket buffers are used. In order
+ * to really stress the pipe code with this test, kernel modifications
+ * nay be necessary.
+ */
+
+int main (void)
+{
+char buffer[32768], buffer2[32768];
+int desc[2];
+int buggy, error, i, successes, total;
+struct stat status;
+pid_t new_pid;
+
+buggy = 0;
+
+error = pipe(desc);
+
+if (error)
+ err(0, "Couldn't allocate fds\n");
+
+buffer[0] = 'A';
+
+for (i = 0; i < 32768; i++) {
+ buffer[i] = buffer[i - 1] + 1;
+ if (buffer[i] > 'Z')
+ buffer[i] = 'A';
+ }
+
+new_pid = fork();
+
+if (new_pid == 0) {
+ error = write(desc[1], &buffer, 4096);
+ total += error;
+ error = write(desc[1], &buffer[total], 4096);
+ total += error;
+ error = write(desc[1], &buffer[total], 4000);
+ total += error;
+ printf("Wrote %d bytes, sleeping\n", total);
+ usleep(1000000);
+ error = write(desc[1], &buffer[total], 3000);
+ total += error;
+ error = write(desc[1], &buffer[total], 3000);
+ total += error;
+ printf("Wrote another 6000 bytes, %d total, done\n", total);
+} else {
+ usleep(500000);
+ error = read(desc[0], &buffer2, 8192);
+ total += error;
+ printf("Read %d bytes, going back to sleep\n", error);
+ usleep(1000000);
+ error = read(desc[0], &buffer2[total], 16384);
+ total += error;
+ printf("Read %d bytes, done\n", error);
+
+ for (i = 0; i < total; i++) {
+ if (buffer[i] != buffer2[i]) {
+ buggy = 1;
+ printf("Location %d input: %hhx output: %hhx\n",
+ i, buffer[i], buffer2[i]);
+ }
+ }
+
+if (buggy)
+ printf("FAILURE\n");
+else
+ printf("SUCCESS\n");
+}
+
+
+}
diff --git a/tools/regression/priv/Makefile b/tools/regression/priv/Makefile
new file mode 100644
index 0000000..7a8d7a0
--- /dev/null
+++ b/tools/regression/priv/Makefile
@@ -0,0 +1,40 @@
+#
+# $FreeBSD$
+#
+
+PROG= main
+SRCS= main.c \
+ priv_acct.c \
+ priv_adjtime.c \
+ priv_clock_settime.c \
+ priv_io.c \
+ priv_kenv_set.c \
+ priv_kenv_unset.c \
+ priv_proc_setlogin.c \
+ priv_proc_setrlimit.c \
+ priv_sched_rtprio.c \
+ priv_sched_setpriority.c \
+ priv_settimeofday.c \
+ priv_sysctl_write.c \
+ priv_vfs_admin.c \
+ priv_vfs_chown.c \
+ priv_vfs_chroot.c \
+ priv_vfs_clearsugid.c \
+ priv_vfs_extattr_system.c \
+ priv_vfs_fhopen.c \
+ priv_vfs_fhstat.c \
+ priv_vfs_fhstatfs.c \
+ priv_vfs_generation.c \
+ priv_vfs_getfh.c \
+ priv_vfs_read_write.c \
+ priv_vfs_setgid.c \
+ priv_vfs_stickyfile.c \
+ priv_vm_mlock.c \
+ priv_vm_munlock.c \
+ priv_vm_madv_protect.c \
+ \
+ test_utimes.c
+NO_MAN=
+WARNS= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/priv/main.c b/tools/regression/priv/main.c
new file mode 100644
index 0000000..90622ad
--- /dev/null
+++ b/tools/regression/priv/main.c
@@ -0,0 +1,184 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Privilege test framework. Each test is encapsulated on a .c file exporting
+ * a function that implements the test. Each test is run from its own child
+ * process, and they are run in sequence one at a time.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+/*
+ * Common routines used across many tests.
+ */
+void
+assert_root(void)
+{
+
+ if (getuid() != UID_ROOT || geteuid() != UID_ROOT)
+ err(-1, "must be run as root");
+}
+
+void
+setup_file(char *fpathp, uid_t uid, gid_t gid, mode_t mode)
+{
+ int fd;
+
+ strcpy(fpathp, "/tmp/priv.XXXXXXXXXXX");
+ fd = mkstemp(fpathp);
+ if (fd < 0)
+ err(-1, "mkstemp");
+
+ if (fchown(fd, uid, gid) < 0)
+ err(-1, "fchown(%s, %d, %d)", fpathp, uid, gid);
+
+ if (fchmod(fd, mode) < 0)
+ err(-1, "chmod(%s, 0%o)", fpathp, mode);
+
+ close(fd);
+}
+
+/*
+ * When downgrading privileges, set the gid before the uid; when upgrading,
+ * set uid before gid.
+ */
+void
+set_creds(uid_t uid, gid_t gid)
+{
+
+ if (setegid(gid) < 0)
+ err(-1, "setegid(%d)", gid);
+ if (seteuid(uid) < 0)
+ err(-1, "seteuid(%d)", uid);
+}
+
+void
+set_euid(uid_t uid)
+{
+
+ if (seteuid(uid) < 0)
+ err(-1, "seteuid(%d)", uid);
+}
+
+void
+restore_creds(void)
+{
+
+ if (seteuid(UID_ROOT) < 0)
+ err(-1, "seteuid(%d)", UID_ROOT);
+ if (setegid(GID_WHEEL) < 0)
+ err(-1, "setegid(%d)", GID_WHEEL);
+}
+
+/*
+ * Execute tests in a child process so they don't contaminate each other,
+ * especially with regard to file descriptors, credentials, working
+ * directories, and chroot status.
+ */
+static void
+run(const char *funcname, void (*func)(void))
+{
+ pid_t childpid, pid;
+
+ printf("running %s\n", funcname);
+ fflush(stdout);
+ fflush(stderr);
+ childpid = fork();
+ if (childpid == -1)
+ err(-1, "test %s unable to fork", funcname);
+ if (childpid == 0) {
+ setprogname(funcname);
+ func();
+ fflush(stdout);
+ fflush(stderr);
+ exit(0);
+ } else {
+ while (1) {
+ pid = waitpid(childpid, NULL, 0);
+ if (pid == -1)
+ warn("waitpid %s", funcname);
+ if (pid == childpid)
+ break;
+ }
+ }
+ fflush(stdout);
+ fflush(stderr);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ run("priv_acct", priv_acct);
+ run("priv_adjtime", priv_adjtime);
+ run("priv_clock_settime", priv_clock_settime);
+ run("priv_io", priv_io);
+ run("priv_kenv_set", priv_kenv_set);
+ run("priv_kenv_unset", priv_kenv_unset);
+ run("priv_proc_setlogin", priv_proc_setlogin);
+ run("priv_proc_setrlimit", priv_proc_setrlimit);
+ run("priv_sched_rtprio", priv_sched_rtprio);
+ run("priv_sched_setpriority", priv_sched_setpriority);
+ run("priv_settimeofday", priv_settimeofday);
+ run("priv_sysctl_write", priv_sysctl_write);
+ run("priv_vfs_admin", priv_vfs_admin);
+ run("priv_vfs_chown", priv_vfs_chown);
+ run("priv_vfs_chroot", priv_vfs_chroot);
+ run("priv_vfs_clearsugid", priv_vfs_clearsugid);
+ run("priv_vfs_extattr_system", priv_vfs_extattr_system);
+ run("priv_vfs_fhopen", priv_vfs_fhopen);
+ run("priv_vfs_fhstat", priv_vfs_fhstat);
+ run("priv_vfs_fhstatfs", priv_vfs_fhstatfs);
+ run("priv_vfs_generation", priv_vfs_generation);
+ run("priv_vfs_getfh", priv_vfs_getfh);
+ run("priv_vfs_read", priv_vfs_read);
+ run("priv_vfs_setgid", priv_vfs_setgid);
+ run("priv_vfs_stickyfile", priv_vfs_stickyfile);
+ run("priv_vfs_write", priv_vfs_write);
+ run("priv_vm_madv_protect", priv_vm_madv_protect);
+ run("priv_vm_mlock", priv_vm_mlock);
+ run("priv_vm_munlock", priv_vm_munlock);
+
+ run("test_utimes", test_utimes);
+
+ return (0);
+}
diff --git a/tools/regression/priv/main.h b/tools/regression/priv/main.h
new file mode 100644
index 0000000..6c5616b
--- /dev/null
+++ b/tools/regression/priv/main.h
@@ -0,0 +1,90 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#define UID_ROOT 0
+#define UID_OWNER 100
+#define UID_OTHER 200
+#define UID_THIRD 300
+
+#define GID_WHEEL 0
+#define GID_OWNER 100
+#define GID_OTHER 200
+
+#define KENV_VAR_NAME "test"
+#define KENV_VAR_VALUE "test"
+
+/*
+ * Library routines used by many tests.
+ */
+void assert_root(void);
+void setup_file(char *fpathp, uid_t uid, gid_t gid, mode_t mode);
+void set_creds(uid_t uid, gid_t gid);
+void set_euid(uid_t uid);
+void restore_creds(void);
+
+/*
+ * Tests for specific privileges.
+ */
+void priv_acct(void);
+void priv_adjtime(void);
+void priv_clock_settime(void);
+void priv_io(void);
+void priv_kenv_set(void);
+void priv_kenv_unset(void);
+void priv_proc_setlogin(void);
+void priv_proc_setrlimit(void);
+void priv_sched_rtprio(void);
+void priv_sched_setpriority(void);
+void priv_settimeofday(void);
+void priv_sysctl_write(void);
+void priv_vfs_admin(void);
+void priv_vfs_chown(void);
+void priv_vfs_chroot(void);
+void priv_vfs_clearsugid(void);
+void priv_vfs_extattr_system(void);
+void priv_vfs_fhopen(void);
+void priv_vfs_fhstat(void);
+void priv_vfs_fhstatfs(void);
+void priv_vfs_generation(void);
+void priv_vfs_getfh(void);
+void priv_vfs_read(void);
+void priv_vfs_setgid(void);
+void priv_vfs_stickyfile(void);
+void priv_vfs_write(void);
+void priv_vm_madv_protect(void);
+void priv_vm_mlock(void);
+void priv_vm_munlock(void);
+
+/*
+ * Tests for more complex access control logic involving more than one
+ * privilege, or privilege combined with DAC.
+ */
+void test_utimes(void);
diff --git a/tools/regression/priv/priv_acct.c b/tools/regression/priv/priv_acct.c
new file mode 100644
index 0000000..bc4a41e7
--- /dev/null
+++ b/tools/regression/priv/priv_acct.c
@@ -0,0 +1,178 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that configuring accounting requires privilege. First check that
+ * accounting is not in use on the system to prevent disrupting the
+ * accounting service. Confirm three different state transitions, both as
+ * privileged and non-privileged: disabled to enabled, rotate, and enabled to
+ * disabled.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/sysctl.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "main.h"
+
+#define SYSCTL_NAME "kern.acct_configured"
+#define PATH_TEMPLATE "/tmp/acct.XXXXXXXXXXX"
+
+void
+priv_acct(void)
+{
+ char fpath1[1024] = PATH_TEMPLATE;
+ char fpath2[1024] = PATH_TEMPLATE;
+ int error, fd, i;
+ size_t len;
+
+ assert_root();
+
+ /*
+ * Check that accounting isn't already configured in the kernel.
+ */
+ len = sizeof(i);
+ if (sysctlbyname(SYSCTL_NAME, &i, &len, NULL, 0) < 0)
+ err(-1, "sysctlbyname(%s)", SYSCTL_NAME);
+ if (i != 0)
+ errx(-1, "sysctlbyname(%s) indicates accounting configured",
+ SYSCTL_NAME);
+
+ /*
+ * Create two temporary files to use as accounting targets.
+ */
+ fd = mkstemp(fpath1);
+ if (fd < 0)
+ err(-1, "mkstemp");
+ close(fd);
+ fd = mkstemp(fpath2);
+ if (fd < 0) {
+ warn("mkstemp");
+ (void)unlink(fpath1);
+ exit(-1);
+ }
+
+ /*
+ * Change the permissions on the file so that access control on the
+ * file doesn't come into play.
+ */
+ if (chmod(fpath1, 0666) < 0) {
+ warn("chmod(%s, 0666)", fpath1);
+ goto out;
+ }
+
+ if (chmod(fpath2, 0666) < 0) {
+ warn("chmod(%s, 0600)", fpath2);
+ goto out;
+ }
+
+ /*
+ * Test that privileged can move through entire life cycle.
+ */
+ if (acct(fpath1) < 0) {
+ warn("acct(NULL -> %s) as root", fpath1);
+ goto out;
+ }
+
+ if (acct(fpath2) < 0) {
+ warn("acct(%s -> %s) as root", fpath1, fpath2);
+ goto out;
+ }
+
+ if (acct(NULL) < 0) {
+ warn("acct(%s -> NULL) as root", fpath1);
+ goto out;
+ }
+
+ /*
+ * Testing for unprivileged is a bit more tricky, as expect each step
+ * to fail, so must replay various bits of the setup process as root
+ * so that each step can be tested as !root.
+ */
+ set_euid(UID_OTHER);
+ error = acct(fpath1);
+ if (error == 0) {
+ warnx("acct(NULL -> %s) succeeded as !root", fpath1);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("acct(NULL -> %s) wrong errno %d as !root", fpath1,
+ errno);
+ goto out;
+ }
+
+ set_euid(UID_ROOT);
+ if (acct(fpath1) < 0) {
+ err(-1, "acct(NULL -> %s) setup for !root", fpath1);
+ goto out;
+ }
+
+ set_euid(UID_OTHER);
+ error = acct(fpath2);
+ if (error == 0) {
+ warnx("acct(%s -> %s) succeeded as !root", fpath1, fpath2);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("acct(%s -> %s) wrong errno %d as !root", fpath1,
+ fpath2, errno);
+ goto out;
+ }
+
+ set_euid(UID_ROOT);
+ if (acct(fpath2) < 0) {
+ err(-1, "acct(%s -> %s) setup for !root", fpath1, fpath2);
+ goto out;
+ }
+
+ set_euid(UID_OTHER);
+ error = acct(NULL);
+ if (error == 0) {
+ warnx("acct(%s -> NULL) succeeded as !root", fpath2);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("acct(%s -> NULL) wrong errno %d as !root", fpath2,
+ errno);
+ goto out;
+ }
+
+out:
+ (void)seteuid(UID_ROOT);
+ (void)acct(NULL);
+ (void)unlink(fpath1);
+ (void)unlink(fpath2);
+}
diff --git a/tools/regression/priv/priv_adjtime.c b/tools/regression/priv/priv_adjtime.c
new file mode 100644
index 0000000..791de97
--- /dev/null
+++ b/tools/regression/priv/priv_adjtime.c
@@ -0,0 +1,75 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Confirm that privilege is required to invoke adjtime(); first query, then
+ * try setting first with, and then without privilege.
+ */
+
+#include <sys/time.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_adjtime(void)
+{
+ struct timeval tv;
+ int error;
+
+ assert_root();
+
+ /*
+ * Query time adjustment.
+ */
+ if (adjtime(NULL, &tv) < 0)
+ err(-1, "adjtime");
+
+ /*
+ * Set with privilege.
+ */
+ if (adjtime(&tv, NULL) < 0)
+ err(-1, "adjtime as root");
+
+ /*
+ * Set without privilege.
+ */
+ set_euid(UID_OTHER);
+
+ error = adjtime(&tv, NULL);
+ if (error == 0)
+ errx(-1, "adjtime succeeded as !root");
+ if (errno != EPERM)
+ errx(-1, "adjtime wrong errno %d as !root", errno);
+}
diff --git a/tools/regression/priv/priv_clock_settime.c b/tools/regression/priv/priv_clock_settime.c
new file mode 100644
index 0000000..e3d1089
--- /dev/null
+++ b/tools/regression/priv/priv_clock_settime.c
@@ -0,0 +1,76 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Confirm that privilege is required to invoke clock_settime(). So as not
+ * to mess up the clock too much, first query the time, then immediately set
+ * it. Test only CLOCK_REALTIME.
+ */
+
+#include <sys/time.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_clock_settime(void)
+{
+ struct timespec ts;
+ int error;
+
+ assert_root();
+
+ /*
+ * Query time.
+ */
+ if (clock_gettime(CLOCK_REALTIME, &ts) < 0)
+ err(-1, "clock_gettime");
+
+ /*
+ * Set with privilege.
+ */
+ if (clock_settime(CLOCK_REALTIME, &ts) < 0)
+ err(-1, "clock_settime as root");
+
+ /*
+ * Set without privilege.
+ */
+ set_euid(UID_OTHER);
+
+ error = clock_settime(CLOCK_REALTIME, &ts);
+ if (error == 0)
+ errx(-1, "clock_settime succeeded as !root");
+ if (errno != EPERM)
+ errx(-1, "clock_settime wrong errno %d as !root", errno);
+}
diff --git a/tools/regression/priv/priv_io.c b/tools/regression/priv/priv_io.c
new file mode 100644
index 0000000..1af1847
--- /dev/null
+++ b/tools/regression/priv/priv_io.c
@@ -0,0 +1,135 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test privilege check on /dev/io. By default, the permissions also protect
+ * against non-superuser access, so this program will modify permissions on
+ * /dev/io to allow group access for the wheel group, and revert the change
+ * on exit. This is not good for run-time security, but is necessary to test
+ * the checks properly.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "main.h"
+
+#define NEW_PERMS 0660
+#define DEV_IO "/dev/io"
+#define EXPECTED_PERMS 0600
+
+static mode_t saved_perms;
+
+static void
+save_perms(void)
+{
+ struct stat sb;
+
+ if (stat(DEV_IO, &sb) < 0)
+ err(-1, "save_perms: stat(%s)", DEV_IO);
+
+ saved_perms = sb.st_mode & ALLPERMS;
+
+ if (saved_perms != EXPECTED_PERMS)
+ err(-1, "save_perms: perms = 0%o; expected 0%o", saved_perms,
+ EXPECTED_PERMS);
+
+}
+
+static void
+set_perms(void)
+{
+
+ if (chmod(DEV_IO, NEW_PERMS) < 0)
+ err(-1, "set_perms: chmod(%s, 0%o)", DEV_IO, NEW_PERMS);
+}
+
+static void
+restore_perms(void)
+{
+
+ if (chmod(DEV_IO, saved_perms) < 0)
+ err(-1, "restore_perms: chmod(%s, 0%o)", DEV_IO, saved_perms);
+}
+
+static void
+try_open(const char *test_case, uid_t uid, int expected)
+{
+ int fd;
+
+ set_euid(uid);
+ fd = open(DEV_IO, O_RDONLY);
+ if (expected == 0) {
+ if (fd == -1) {
+ warn("try_open: %s open(%s) errno %d", DEV_IO,
+ test_case, errno);
+ goto out;
+ }
+ close(fd);
+ goto out;
+ }
+ if (fd >= 0) {
+ warn("try_open: %s open(%s) unexpected success", test_case,
+ DEV_IO);
+ close(fd);
+ goto out;
+ }
+ if (errno == expected)
+ goto out;
+ warn("try_open: %s open(%s) wrong errno %d, expected %d", DEV_IO,
+ test_case, errno, expected);
+out:
+ set_euid(UID_ROOT);
+}
+
+void
+priv_io(void)
+{
+
+ assert_root();
+
+ save_perms();
+
+ try_open("root:0600", UID_ROOT, 0);
+ try_open("other", UID_OTHER, EACCES);
+
+ set_perms();
+
+ try_open("root:0660", UID_ROOT, 0);
+ try_open("other", UID_OTHER, EPERM);
+
+ restore_perms();
+}
diff --git a/tools/regression/priv/priv_kenv_set.c b/tools/regression/priv/priv_kenv_set.c
new file mode 100644
index 0000000..96e785d
--- /dev/null
+++ b/tools/regression/priv/priv_kenv_set.c
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that setting a kernel environment variable requires privilege, by
+ * first trying it with privilege, then without.
+ */
+
+#include <sys/types.h>
+
+#include <err.h>
+#include <errno.h>
+#include <kenv.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_kenv_set(void)
+{
+ int error;
+
+ assert_root();
+
+ error = kenv(KENV_SET, KENV_VAR_NAME, KENV_VAR_VALUE,
+ strlen(KENV_VAR_VALUE)+1);
+ if (error)
+ err(-1, "kenv(KENV_SET, ...) as root");
+
+ set_euid(UID_OTHER);
+
+ error = kenv(KENV_SET, KENV_VAR_NAME, KENV_VAR_VALUE,
+ strlen(KENV_VAR_VALUE)+1);
+ if (error == 0)
+ errx(-1, "kenv(KENV_SET, ...) as !root succeeded");
+ if (errno != EPERM)
+ err(-1, "kenv(KENV_SET, ...) as !root wrong errno %d",
+ errno);
+}
diff --git a/tools/regression/priv/priv_kenv_unset.c b/tools/regression/priv/priv_kenv_unset.c
new file mode 100644
index 0000000..2bb800d
--- /dev/null
+++ b/tools/regression/priv/priv_kenv_unset.c
@@ -0,0 +1,77 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that setting a kernel environment variable, then trying to unset it
+ * without and with privilege.
+ */
+
+#include <sys/types.h>
+
+#include <err.h>
+#include <errno.h>
+#include <kenv.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_kenv_unset(void)
+{
+ int error;
+
+ assert_root();
+
+ error = kenv(KENV_SET, KENV_VAR_NAME, KENV_VAR_VALUE,
+ strlen(KENV_VAR_VALUE)+1);
+ if (error)
+ err(-1, "kenv(KENV_SET, ...) as root");
+
+ error = kenv(KENV_UNSET, KENV_VAR_NAME, NULL, 0);
+ if (error)
+ err(-1, "kenv(KENV_UNSET, ...) as root");
+
+ /* Set it again for !root. */
+ error = kenv(KENV_SET, KENV_VAR_NAME, KENV_VAR_VALUE,
+ strlen(KENV_VAR_VALUE)+1);
+ if (error)
+ err(-1, "kenv(KENV_SET, ...) as root");
+
+ set_euid(UID_OTHER);
+
+ error = kenv(KENV_UNSET, KENV_VAR_NAME, NULL, 0);
+ if (error == 0)
+ errx(-1, "kenv(KENV_UNSET, ...) as !root succeeded");
+ if (errno != EPERM)
+ err(-1, "kenv(KENV_UNSET, ...) as !root wrong errno %d",
+ errno);
+}
diff --git a/tools/regression/priv/priv_proc_setlogin.c b/tools/regression/priv/priv_proc_setlogin.c
new file mode 100644
index 0000000..6f5e756
--- /dev/null
+++ b/tools/regression/priv/priv_proc_setlogin.c
@@ -0,0 +1,73 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that privilege is required to call setlogin(). Do so by first
+ * querying with getlogin(), then setting the result back using setlogin(),
+ * at first with privilege, then without.
+ */
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_proc_setlogin(void)
+{
+ char *loginname;
+ int error;
+
+ assert_root();
+
+ loginname = getlogin();
+ if (loginname == NULL)
+ err(-1, "getlogin");
+
+ /*
+ * First, with privilege.
+ */
+ error = setlogin(loginname);
+ if (error)
+ err(-1, "setlogin(%s) as root", loginname);
+
+ /*
+ * Then again, without privilege.
+ */
+ set_euid(UID_OTHER);
+
+ error = setlogin(loginname);
+ if (error == 0)
+ errx(-1, "setlogin(%s) succeeded as !root", loginname);
+ if (errno != EPERM)
+ err(-1, "setlogin(%s) wrong errno %d", loginname, errno);
+}
diff --git a/tools/regression/priv/priv_proc_setrlimit.c b/tools/regression/priv/priv_proc_setrlimit.c
new file mode 100644
index 0000000..adf471b
--- /dev/null
+++ b/tools/regression/priv/priv_proc_setrlimit.c
@@ -0,0 +1,137 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that raising current resource limits above hard resource limits
+ * requires privilege. There is one privilege check, but two conditions:
+ *
+ * - To raise the current above the maximum.
+ *
+ * - To raise the maximum.
+ */
+
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_proc_setrlimit(void)
+{
+ struct rlimit rl, rl_lower, rl_raise_max, rl_raise_cur;
+ int error;
+
+ assert_root();
+
+ /*
+ * To make sure that there is room to raise the resource limit, we
+ * must first lower it. Otherwise, if the resource limit is already
+ * at the global maximum, that complicates matters. In principle, we
+ * can bump into privilege failures during setup, but there's not
+ * much we can do about that. Keep this prototypical setting around
+ * as the target to restore to later.
+ */
+ if (getrlimit(RLIMIT_DATA, &rl) < 0)
+ err(-1, "getrlimit(RLIMIT_DATA)");
+
+ /*
+ * What to lower to before trying to raise.
+ */
+ rl_lower = rl;
+ rl_lower.rlim_cur -= 10;
+ rl_lower.rlim_max = rl_lower.rlim_cur;
+
+ /*
+ * Raise the maximum.
+ */
+ rl_raise_max = rl;
+ rl_raise_max.rlim_max += 10;
+
+ /*
+ * Raise the current above the maximum.
+ */
+ rl_raise_cur = rl;
+ rl_raise_cur.rlim_cur += 10;
+
+ /*
+ * Test raising the maximum with privilege.
+ */
+ if (setrlimit(RLIMIT_DATA, &rl_lower) < 0)
+ err(-1, "setrlimit(RLIMIT_DATA, lower) as root");
+
+ if (setrlimit(RLIMIT_DATA, &rl_raise_max) < 0)
+ err(-1, "setrlimit(RLIMIT_DATA, raise_max) as root");
+
+ /*
+ * Test raising the current above the maximum with privilege.
+ */
+ if (setrlimit(RLIMIT_DATA, &rl_lower) < 0)
+ err(-1, "setrlimit(RLIMIT_DATA, lower) as root");
+
+ if (setrlimit(RLIMIT_DATA, &rl_raise_cur) < 0)
+ err(-1, "setrlimit(RLIMIT_DATA, raise_cur) as root");
+
+ /*
+ * Test raising the maximum without privilege.
+ */
+ if (setrlimit(RLIMIT_DATA, &rl_lower) < 0)
+ err(-1, "setrlimit(RLIMIT_DATA, lower) as root");
+
+ set_euid(UID_OTHER);
+ error = setrlimit(RLIMIT_DATA, &rl_raise_max);
+ if (error == 0)
+ errx(-1,
+ "setrlimit(RLIMIT_DATA, raise_max) succeeded as !root");
+ if (errno != EPERM)
+ err(-1, "setrlimit(RLIMIT_DATA, raise_max) wrong errno %d "
+ "as !root", errno);
+
+ /*
+ * Test raising the current above the maximum without privilege.
+ */
+ set_euid(UID_ROOT);
+ if (setrlimit(RLIMIT_DATA, &rl_lower) < 0)
+ err(-1, "setrlimit(RLIMIT_DATA, lower) as root");
+ set_euid(UID_OTHER);
+
+ error = setrlimit(RLIMIT_DATA, &rl_raise_cur);
+ if (error == 0)
+ errx(-1,
+ "setrlimit(RLIMIT_DATA, raise_cur) succeeded as !root");
+ if (errno != EPERM)
+ err(-1, "setrlimit(RLIMIT_DATA, raise_cur) wrong errno %d "
+ "as !root", errno);
+}
diff --git a/tools/regression/priv/priv_sched_rtprio.c b/tools/regression/priv/priv_sched_rtprio.c
new file mode 100644
index 0000000..72d1756
--- /dev/null
+++ b/tools/regression/priv/priv_sched_rtprio.c
@@ -0,0 +1,234 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test privilege associated with real time process settings. There are
+ * three relevant notions of privilege:
+ *
+ * - Privilege to set the real-time priority of the current process.
+ * - Privilege to set the real-time priority of another process.
+ * - Privilege to set the idle priority of another process.
+ * - No privilege to set the idle priority of the current process.
+ *
+ * This requires a test process and a target (dummy) process running with
+ * various uids. This test is based on the code in the setpriority() test.
+ */
+
+#include <sys/types.h>
+#include <sys/rtprio.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "main.h"
+
+static void
+dummy(void)
+{
+
+ while (1)
+ sleep(1);
+}
+
+static void
+collect(pid_t test_pid, pid_t dummy_pid)
+{
+ pid_t pid;
+
+ /*
+ * First, collect the main test process. When it has exited, then
+ * kill off the dummy process.
+ */
+ if (test_pid > 0) {
+ while (1) {
+ pid = waitpid(test_pid, NULL, 0);
+ if (pid == -1)
+ warn("waitpid(%d (test), NULL, 0)", test_pid);
+ if (pid == test_pid)
+ break;
+ }
+ }
+
+ if (kill(dummy_pid, SIGKILL) < 0)
+ err(-1, "kill(%d, SIGKILL)", dummy_pid);
+
+ while (1) {
+ pid = waitpid(dummy_pid, NULL, 0);
+ if (pid == -1)
+ warn("waitpid(%d, NULL, 0)", dummy_pid);
+ if (pid == dummy_pid)
+ return;
+ }
+}
+
+static void
+test(pid_t dummy_pid)
+{
+ struct rtprio rtp;
+ int error;
+
+ /*
+ * Tests first as root. Test that we can set normal, realtime, and
+ * idle priorities on the current thread and on the dummy thread.
+ */
+ rtp.type = RTP_PRIO_REALTIME;
+ rtp.prio = 0;
+ if (rtprio(RTP_SET, 0, &rtp) < 0)
+ err(-1, "rtprio(RTP_SET, 0, {REALTIME, 0}) as root");
+
+ rtp.type = RTP_PRIO_IDLE;
+ rtp.prio = 0;
+ if (rtprio(RTP_SET, 0, &rtp) < 0)
+ err(-1, "rtprio(RTP_SET, 0, {IDLE, 0}) as root");
+
+ rtp.type = RTP_PRIO_NORMAL;
+ rtp.prio = 0;
+ if (rtprio(RTP_SET, 0, &rtp) < 0)
+ err(-1, "rtprio(RTP_SET, 0, {NORMAL, 0) as root");
+
+ rtp.type = RTP_PRIO_REALTIME;
+ rtp.prio = 0;
+ if (rtprio(RTP_SET, dummy_pid, &rtp) < 0)
+ err(-1, "rtprio(RTP_SET, %d, {REALTIME, 0}) as root",
+ dummy_pid);
+
+ rtp.type = RTP_PRIO_IDLE;
+ rtp.prio = 0;
+ if (rtprio(RTP_SET, dummy_pid, &rtp) < 0)
+ err(-1, "rtprio(RTP_SET, %d, {IDLE, 0}) as root", dummy_pid);
+
+ rtp.type = RTP_PRIO_NORMAL;
+ rtp.prio = 0;
+ if (rtprio(RTP_SET, dummy_pid, &rtp) < 0)
+ err(-1, "rtprio(RTP_SET, %d, {NORMAL, 0) as root",
+ dummy_pid);
+
+ /*
+ * Then test again as a different credential.
+ */
+ if (setresuid(UID_OTHER, UID_OTHER, UID_OTHER) < 0)
+ err(-1, "setresuid(%d)", UID_OTHER);
+
+ rtp.type = RTP_PRIO_REALTIME;
+ rtp.prio = 0;
+ error = rtprio(RTP_SET, 0, &rtp);
+ if (error == 0)
+ errx(-1,
+ "rtprio(RTP_SET, 0, {REALTIME, 0}) succeeded as !root");
+ if (errno != EPERM)
+ err(-1, "rtprio(RTP_SET, 0, {REALTIME, 0}) wrong errno %d as"
+ " !root", errno);
+
+ rtp.type = RTP_PRIO_IDLE;
+ rtp.prio = 0;
+ error = rtprio(RTP_SET, 0, &rtp);
+ if (error == 0)
+ errx(-1, "rtprio(RTP_SET, 0, {IDLE, 0}) succeeded as !root");
+ if (errno != EPERM)
+ err(-1, "rtprio(RTP_SET, 0, {IDLE, 0}) wrong errno %d as "
+ "!root", errno);
+
+ rtp.type = RTP_PRIO_NORMAL;
+ rtp.prio = 0;
+ if (rtprio(RTP_SET, 0, &rtp) < 0)
+ err(-1, "rtprio(RTP_SET, 0, {NORMAL, 0}) as !root");
+
+ rtp.type = RTP_PRIO_REALTIME;
+ rtp.prio = 0;
+ error = rtprio(RTP_SET, dummy_pid, &rtp);
+ if (error == 0)
+ errx(-1,
+ "rtprio(RTP_SET, %d, {REALTIME, 0}) succeeded as !root",
+ dummy_pid);
+ if (errno != EPERM)
+ err(-1, "rtprio(RTP_SET, %d, {REALTIME, 0}) wrong errno %d as"
+ " !root", dummy_pid, errno);
+
+ rtp.type = RTP_PRIO_IDLE;
+ rtp.prio = 0;
+ error = rtprio(RTP_SET, dummy_pid, &rtp);
+ if (error == 0)
+ errx(-1, "rtprio(RTP_SET, %d, {IDLE, 0}) succeeded as !root",
+ dummy_pid);
+ if (errno != EPERM)
+ err(-1,
+ "rtprio(RTP_SET, %d, {IDLE, 0}) wrong errno %d as !root",
+ dummy_pid, errno);
+
+ rtp.type = RTP_PRIO_NORMAL;
+ rtp.prio = 0;
+ error = rtprio(RTP_SET, dummy_pid, &rtp);
+ if (error == 0)
+ errx(-1,
+ "rtprio(RTP_SET, %d, {NORMAL, 0) succeeded as !root",
+ dummy_pid);
+ if (errno != EPERM)
+ err(-1, "rtprio(RTP_SET, %d, {NORMAL, 0}) wrong errno %d as "
+ "!root", dummy_pid, errno);
+
+ exit(0);
+}
+
+void
+priv_sched_rtprio(void)
+{
+ pid_t dummy_pid, test_pid;
+
+ assert_root();
+
+ /*
+ * Set up dummy process, which we will kill before exiting.
+ */
+ dummy_pid = fork();
+ if (dummy_pid < 0)
+ err(-1, "fork - dummy");
+ if (dummy_pid == 0) {
+ if (setresuid(UID_THIRD, UID_THIRD, UID_THIRD) < 0)
+ err(-1, "setresuid(%d)", UID_THIRD);
+ dummy();
+ }
+ sleep(1); /* Allow dummy thread to change uids. */
+
+ test_pid = fork();
+ if (test_pid < 0) {
+ warn("fork - test");
+ collect(-1, dummy_pid);
+ return;
+ }
+ if (test_pid == 0)
+ test(dummy_pid);
+
+ collect(test_pid, dummy_pid);
+}
diff --git a/tools/regression/priv/priv_sched_setpriority.c b/tools/regression/priv/priv_sched_setpriority.c
new file mode 100644
index 0000000..4d56813
--- /dev/null
+++ b/tools/regression/priv/priv_sched_setpriority.c
@@ -0,0 +1,163 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that privilege is required to lower nice value; first test with, then
+ * without. There are two failure modes associated with privilege: the right
+ * to renice a process with a different uid, and the right to renice to a
+ * lower priority. Because both the real and effective uid are part of the
+ * permissions test, we have to create two children processes with different
+ * uids.
+ */
+
+#include <sys/types.h>
+#include <sys/resource.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "main.h"
+
+static void
+dummy(void)
+{
+
+ while (1)
+ sleep(1);
+}
+
+static void
+collect(pid_t test_pid, pid_t dummy_pid)
+{
+ pid_t pid;
+
+ /*
+ * First, collect the main test process. When it has exited, then
+ * kill off the dummy process.
+ */
+ if (test_pid > 0) {
+ while (1) {
+ pid = waitpid(test_pid, NULL, 0);
+ if (pid == -1)
+ warn("waitpid(%d (test), NULL, 0)", test_pid);
+ if (pid == test_pid)
+ break;
+ }
+ }
+
+ if (kill(dummy_pid, SIGKILL) < 0)
+ err(-1, "kill(%d, SIGKILL)", dummy_pid);
+
+ while (1) {
+ pid = waitpid(dummy_pid, NULL, 0);
+ if (pid == -1)
+ warn("waitpid(%d, NULL, 0)", dummy_pid);
+ if (pid == dummy_pid)
+ return;
+ }
+}
+
+static void
+test(pid_t dummy_pid)
+{
+ int error;
+
+ /*
+ * Tests first as root.
+ */
+ if (setpriority(PRIO_PROCESS, 0, -1) < 0)
+ err(-1, "setpriority(PRIO_PROCESS, 0, -1) as root");
+
+ if (setpriority(PRIO_PROCESS, dummy_pid, -1) < 0)
+ err(-1, "setpriority(PRIO_PROCESS, %d, -1) as root",
+ dummy_pid);
+
+ /*
+ * Then test again as a different credential.
+ */
+ if (setresuid(UID_OTHER, UID_OTHER, UID_OTHER) < 0)
+ err(-1, "setresuid(%d)", UID_OTHER);
+
+ error = setpriority(PRIO_PROCESS, 0, -2);
+ if (error == 0)
+ errx(-1,
+ "setpriority(PRIO_PROCESS, 0, -2) succeeded as !root");
+ if (errno != EACCES)
+ err(-1, "setpriority(PRIO_PROCESS, 0, 2) wrong errno %d as "
+ "!root", errno);
+
+ error = setpriority(PRIO_PROCESS, dummy_pid, -2);
+ if (error == 0)
+ errx(-1,
+ "setpriority(PRIO_PROCESS, %d, -2) succeeded as !root",
+ dummy_pid);
+ if (errno != EPERM)
+ err(-1, "setpriority(PRIO_PROCESS, %d, 2) wrong errno %d as "
+ "!root", dummy_pid, errno);
+
+ exit(0);
+}
+
+void
+priv_sched_setpriority(void)
+{
+ pid_t dummy_pid, test_pid;
+
+ assert_root();
+
+ /*
+ * Set up dummy process, which we will kill before exiting.
+ */
+ dummy_pid = fork();
+ if (dummy_pid < 0)
+ err(-1, "fork - dummy");
+ if (dummy_pid == 0) {
+ if (setresuid(UID_THIRD, UID_THIRD, UID_THIRD) < 0)
+ err(-1, "setresuid(%d)", UID_THIRD);
+ dummy();
+ }
+ sleep(1); /* Allow dummy thread to change uids. */
+
+ test_pid = fork();
+ if (test_pid < 0) {
+ warn("fork - test");
+ collect(-1, dummy_pid);
+ return;
+ }
+ if (test_pid == 0)
+ test(dummy_pid);
+
+ collect(test_pid, dummy_pid);
+}
diff --git a/tools/regression/priv/priv_settimeofday.c b/tools/regression/priv/priv_settimeofday.c
new file mode 100644
index 0000000..d18582f
--- /dev/null
+++ b/tools/regression/priv/priv_settimeofday.c
@@ -0,0 +1,76 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Confirm that privilege is required to invoke settimeofday(). So as not
+ * to mess up the clock too much, first query the time, then immediately set
+ * it.
+ */
+
+#include <sys/time.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_settimeofday(void)
+{
+ struct timeval tv;
+ int error;
+
+ assert_root();
+
+ /*
+ * Query time.
+ */
+ if (gettimeofday(&tv, NULL) < 0)
+ err(-1, "gettimeofday");
+
+ /*
+ * Set with privilege.
+ */
+ if (settimeofday(&tv, NULL) < 0)
+ err(-1, "settimeofday as root");
+
+ /*
+ * Set without privilege.
+ */
+ set_euid(UID_OTHER);
+
+ error = settimeofday(&tv, NULL);
+ if (error == 0)
+ errx(-1, "settimeofday succeeded as !root");
+ if (errno != EPERM)
+ errx(-1, "settimeofday wrong errno %d as !root", errno);
+}
diff --git a/tools/regression/priv/priv_sysctl_write.c b/tools/regression/priv/priv_sysctl_write.c
new file mode 100644
index 0000000..becff06
--- /dev/null
+++ b/tools/regression/priv/priv_sysctl_write.c
@@ -0,0 +1,89 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that sysctls can only be written with privilege by trying first with,
+ * then without privilege. Do this by first reading, then setting the
+ * hostname as a no-op.
+ */
+
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+#include <err.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+#define KERN_HOSTNAME_STRING "kern.hostname"
+
+void
+priv_sysctl_write(void)
+{
+ char buffer[1024];
+ size_t len;
+ int error;
+
+ assert_root();
+
+ /*
+ * First query the current value.
+ */
+ len = sizeof(buffer);
+ error = sysctlbyname(KERN_HOSTNAME_STRING, buffer, &len, NULL, 0);
+ if (error)
+ err(-1, "sysctlbyname(\"%s\") query", KERN_HOSTNAME_STRING);
+
+ /*
+ * Now try to set with privilege.
+ */
+ error = sysctlbyname(KERN_HOSTNAME_STRING, NULL, NULL, buffer,
+ strlen(buffer));
+ if (error)
+ err(-1, "sysctlbyname(\"%s\") set as root",
+ KERN_HOSTNAME_STRING);
+
+ /*
+ * Now without privilege.
+ */
+ set_euid(UID_OTHER);
+
+ error = sysctlbyname(KERN_HOSTNAME_STRING, NULL, NULL, buffer,
+ strlen(buffer));
+ if (error == 0)
+ errx(-1, "sysctlbyname(\"%s\") succeeded as !root",
+ KERN_HOSTNAME_STRING);
+ if (errno != EPERM)
+ err(-1, "sysctlbyname(\"%s\") wrong errno %d",
+ KERN_HOSTNAME_STRING, errno);
+}
diff --git a/tools/regression/priv/priv_vfs_admin.c b/tools/regression/priv/priv_vfs_admin.c
new file mode 100644
index 0000000..f06e9b2
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_admin.c
@@ -0,0 +1,328 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Check that privilege is required for a variety of administrative
+ * activities on a file owned by another user. Admin privileges are required
+ * for the following services:
+ *
+ * - Set file flags.
+ * - Set utimes to non-NULL.
+ * - Set file mode.
+ * - Set file ownership.
+ * - Remove a file from a sticky directory. (XXXRW: Not tested here.)
+ * - Set the ACL on a file. (XXXRW: Not tested here.)
+ * - Delete the ACL on a file. (XXXRW: Not tested here.)
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+static u_long
+getflags(char *fpathp)
+{
+ struct stat sb;
+
+ if (stat(fpathp, &sb) < 0)
+ err(-1, "stat(%s)", fpathp);
+
+ return (sb.st_flags);
+}
+
+static void
+priv_vfs_admin_chflags(void)
+{
+ char fpath[1024];
+ u_long flags;
+ int error;
+
+ /*
+ * Test that setting file flags works as and not as the file owner
+ * when running with privilege, but only as the file owner when
+ * running without privilege.
+ */
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0600);
+ flags = getflags(fpath);
+ flags |= UF_NODUMP;
+ if (chflags(fpath, flags) < 0) {
+ warn("chflags(%s, UF_NODUMP) owner as root", fpath);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ flags = getflags(fpath);
+ flags |= UF_NODUMP;
+ if (chflags(fpath, flags) < 0) {
+ warn("chflags(%s, UF_NODUMP) !owner as root", fpath);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ flags = getflags(fpath);
+ flags |= UF_NODUMP;
+ set_euid(UID_OWNER);
+ if (chflags(fpath, flags) < 0) {
+ warn("chflags(%s, UF_NODUMP) owner as !root", fpath);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ flags = getflags(fpath);
+ flags |= UF_NODUMP;
+ set_euid(UID_OTHER);
+ error = chflags(fpath, flags);
+ if (error == 0) {
+ warnx("chflags(%s, UF_NODUMP) succeeded !owner as !root",
+ fpath);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("chflags(%s, UF_NODUMP) wrong errno %d !owner a !root",
+ fpath, errno);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+out:
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
+
+static void
+priv_vfs_admin_utimes(void)
+{
+ struct timeval tv[2];
+ char fpath[1024];
+ int error;
+
+ /*
+ * Actual values don't matter here.
+ */
+ tv[0].tv_sec = 0;
+ tv[0].tv_usec = 0;
+ tv[1].tv_sec = 0;
+ tv[1].tv_usec = 0;
+
+ /*
+ * When using a non-NULL argument to utimes(), must either hold
+ * privilege or be the file owner. Check all four possible
+ * combinations of privilege, ownership.
+ */
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0600);
+ if (utimes(fpath, tv) < 0) {
+ warn("utimes(%s, !NULL) owner as root", fpath);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ if (utimes(fpath, tv) < 0) {
+ warn("utimes(%s, !NULL) !owner as root", fpath);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ set_euid(UID_OWNER);
+ if (utimes(fpath, tv) < 0) {
+ warn("utimes(%s, !NULL) owner as !root", fpath);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ set_euid(UID_OTHER);
+ error = utimes(fpath, tv);
+ if (error == 0) {
+ warnx("utimes(%s, !NULL) succeeded !owner as !root",
+ fpath);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("utimes(%s, !NULL) wrong errno %d !owner a !root",
+ fpath, errno);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+out:
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
+
+static void
+priv_vfs_admin_chmod(void)
+{
+ char fpath[1024];
+ int error;
+
+ /*
+ * Test that setting file permissions works either as file owner or
+ * not when running with privilege, but only as file owner when
+ * running without privilege.
+ */
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0600);
+ if (chmod(fpath, 0640) < 0) {
+ warn("chmod(%s, 0640) owner as root", fpath);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ if (chmod(fpath, 0640) < 0) {
+ warn("chmod(%s, 0640) !owner as root", fpath);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ set_euid(UID_OWNER);
+ if (chmod(fpath, 0640) < 0) {
+ warn("chmod(%s, 0640) owner as !root", fpath);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ set_euid(UID_OTHER);
+ error = chmod(fpath, 0640);
+ if (error == 0) {
+ warnx("chmod(%s, 0640) succeeded !owner as !root",
+ fpath);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("chmod(%s, 0640) wrong errno %d !owner a !root",
+ fpath, errno);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+out:
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
+
+static const gid_t gidset[] = { GID_WHEEL, GID_OWNER, GID_OTHER};
+
+static void
+priv_vfs_admin_chown(void)
+{
+ char fpath[1024];
+ int error;
+
+ /*
+ * Test that the group of the file can only be changed with privilege
+ * or as the owner. These test is run last as it frobs the group
+ * context. We change the file group from one group we're in to
+ * another we're in to avoid any other access control checks failing.
+ */
+ if (setgroups(3, gidset) < 0)
+ err(-1, "priv_vfs_admin_chown:setgroups(3, {%d, %d, %d})",
+ GID_WHEEL, GID_OWNER, GID_OTHER);
+
+ /*
+ * Test that setting file permissions works either as file owner or
+ * not when running with privilege, but only as file owner when
+ * running without privilege.
+ */
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0600);
+ if (chown(fpath, -1, GID_OWNER) < 0) {
+ warn("chown(%s, %d) owner as root", fpath, GID_OWNER);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ if (chown(fpath, -1, GID_OWNER) < 0) {
+ warn("chown(%s, %d) !owner as root", fpath, GID_OWNER);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ set_euid(UID_OWNER);
+ if (chown(fpath, -1, GID_OWNER) < 0) {
+ warn("chown(%s, %d) owner as !root", fpath, GID_OWNER);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ set_euid(UID_OTHER);
+ error = chown(fpath, -1, GID_OWNER);
+ if (error == 0) {
+ warnx("chown(%s, %d) succeeded !owner as !root",
+ fpath, GID_OWNER);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("chown(%s, %d) wrong errno %d !owner a !root",
+ fpath, GID_OWNER, errno);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+out:
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
+
+void
+priv_vfs_admin(void)
+{
+
+ assert_root();
+
+ priv_vfs_admin_chflags();
+ priv_vfs_admin_utimes();
+ priv_vfs_admin_chmod();
+ priv_vfs_admin_chown(); /* Run this last. */
+}
diff --git a/tools/regression/priv/priv_vfs_chown.c b/tools/regression/priv/priv_vfs_chown.c
new file mode 100644
index 0000000..8d72ac2
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_chown.c
@@ -0,0 +1,170 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Confirm that privilege is required in the cases using chown():
+ *
+ * - If the process euid does not match the file uid.
+ *
+ * - If the target uid is different than the current uid.
+ *
+ * - If the target gid changes and we the process is not a member of the new
+ * group.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include "main.h"
+
+const gid_t gidset[] = {GID_WHEEL, GID_OWNER};
+
+void
+priv_vfs_chown(void)
+{
+ char fpath[1024];
+ int error;
+
+ assert_root();
+
+ /*
+ * Before beginning, set up group set for process. Place in wheel
+ * and owner groups; don't put in other group so that when we chown
+ * to the other group, it's as a non-member.
+ */
+ if (setgroups(2, gidset) < 0)
+ err(-1, "setgroups(2, {%d, %d})", GID_WHEEL, GID_OWNER);
+
+ /*
+ * In the first pass, confirm that all works as desired with
+ * privilege.
+ *
+ * Check that chown when non-owner works fine. Do a no-op change to
+ * avoid other permission checks. Note that we can't request
+ * (-1, -1) and get an access control check, we have to request
+ * specific uid/gid that are not the same.
+ */
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ if (chown(fpath, -1, GID_OWNER) < 0) {
+ warn("chown(%s, -1, %d) as root", fpath, GID_OWNER);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ /*
+ * Check that chown changing uid works with privilege.
+ */
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ if (chown(fpath, UID_OTHER, -1) < 0) {
+ warn("chown(%s, %d, -1) as root", fpath, UID_OTHER);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ /*
+ * Check that can change the file group to one we are not a member of
+ * when running with privilege.
+ */
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ if (chown(fpath, -1, GID_OTHER) < 0) {
+ warn("chown(%s, -1, %d) as root", fpath, GID_OTHER);
+ goto out;
+ }
+ (void)unlink(fpath);
+
+ /*
+ * Now, the same again, but without privilege.
+ *
+ * Confirm that we can't chown a file we don't own, even as a no-op.
+ */
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ set_euid(UID_OTHER);
+ error = chown(fpath, -1, GID_OWNER);
+ if (error == 0) {
+ warnx("chown(%s, -1, %d) succeeded as !root, non-owner",
+ fpath, GID_OWNER);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("chown(%s, -1, %d) wrong errno %d as !root, non-owner",
+ fpath, GID_OWNER, errno);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+ /*
+ * Check that we can't change the uid of the file without privilege,
+ * even though we own the file.
+ */
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ set_euid(UID_OWNER);
+ error = chown(fpath, UID_OTHER, -1);
+ if (error == 0) {
+ warnx("chown(%s, %d, -1) succeeded as !root", fpath,
+ UID_OTHER);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("chown(%s, %d, -1) wrong errno %d as !root", fpath,
+ UID_OTHER, errno);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+
+ /*
+ * Check that can't change the file group to one we are not a member
+ * of when running without privilege.
+ */
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600);
+ set_euid(UID_OWNER);
+ error = chown(fpath, -1, GID_OTHER);
+ if (error == 0) {
+ warn("chown(%s, -1, %d) succeeded as !root", fpath, GID_OTHER);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("chown(%s, -1, %d) wrong errno %d as !root", fpath,
+ errno, GID_OTHER);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ (void)unlink(fpath);
+out:
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
diff --git a/tools/regression/priv/priv_vfs_chroot.c b/tools/regression/priv/priv_vfs_chroot.c
new file mode 100644
index 0000000..06c36d4
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_chroot.c
@@ -0,0 +1,63 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that chroot() requires privilege; try with, and without. Do a no-op
+ * chroot() to "/".
+ *
+ * XXXRW: Would also be good to check fchroot() permission, but that is not
+ * exposed via the BSD API.
+ */
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_vfs_chroot(void)
+{
+ int error;
+
+ assert_root();
+
+ if (chroot("/") < 0)
+ err(-1, "chroot(\"/\") as root");
+
+ set_euid(UID_OTHER);
+
+ error = chroot("/");
+ if (error == 0)
+ errx(-1, "chroot(\"/\") succeeded as !root");
+ if (errno != EPERM)
+ err(-1, "chroot(\"/\") wrong errno %d as !root", errno);
+}
diff --git a/tools/regression/priv/priv_vfs_clearsugid.c b/tools/regression/priv/priv_vfs_clearsugid.c
new file mode 100644
index 0000000..a8ddcd5
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_clearsugid.c
@@ -0,0 +1,215 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * There are three cases in which the file system will clear the setuid or
+ * setgid bits on a file when running as !root:
+ *
+ * - When the file is chown()'d and either of the uid or the gid is changed.
+ *
+ * - The file is written to succeesfully.
+ *
+ * - An extended attribute of the file is written to successfully.
+ *
+ * Test each case first as root (that flags aren't cleared), and then as
+ * !root, to check they are cleared.
+ */
+
+#include <sys/types.h>
+#include <sys/extattr.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+static const gid_t gidset[] = {GID_WHEEL, GID_OWNER, GID_OTHER};
+
+/*
+ * Confirm that the setuid bit is set on a file. Don't return on failure.
+ */
+static void
+confirm_setuid(char *fpathp, char *test_case)
+{
+ struct stat sb;
+
+ if (stat(fpathp, &sb) < 0) {
+ warn("%s stat(%s)", test_case, fpathp);
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpathp);
+ exit(-1);
+ }
+ if (!(sb.st_mode & S_ISUID)) {
+ warnx("case %s stat(%s) not setuid", test_case, fpathp);
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpathp);
+ exit(-1);
+ }
+}
+
+/*
+ * Confirm that the setuid bit is not set on a file. Don't return on failure.
+ */
+static void
+confirm_notsetuid(char *fpathp, char *test_case)
+{
+ struct stat sb;
+
+ if (stat(fpathp, &sb) < 0) {
+ warn("%s stat(%s)", test_case, fpathp);
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpathp);
+ exit(-1);
+ }
+ if (sb.st_mode & S_ISUID) {
+ warnx("case %s stat(%s) is setuid", test_case, fpathp);
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpathp);
+ exit(-1);
+ }
+}
+
+#define EA_NAMESPACE EXTATTR_NAMESPACE_USER
+#define EA_NAME "clearsugid"
+#define EA_DATA "test"
+#define EA_SIZE (strlen(EA_DATA))
+void
+priv_vfs_clearsugid(void)
+{
+ char ch, fpath[1024];
+ int fd;
+
+ assert_root();
+
+ /*
+ * Before starting on work, set up group IDs so that the process can
+ * change the group ID of the file without privilege, in order to see
+ * the effects. That way privilege is only required to maintain the
+ * setuid bit. For the chown() test, we change only the group id, as
+ * that can be done with or without privilege.
+ */
+ if (setgroups(3, gidset) < 0)
+ err(-1, "setgroups(2, {%d, %d})", GID_WHEEL, GID_OWNER);
+
+ /*
+ * chown() with privilege.
+ */
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0600 | S_ISUID);
+ if (chown(fpath, -1, GID_OTHER) < 0)
+ warn("chown(%s, -1, %d) as root", fpath, GID_OTHER);
+ confirm_setuid(fpath, "chown as root");
+ (void)unlink(fpath);
+
+ /*
+ * write() with privilege.
+ */
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0600 | S_ISUID);
+ fd = open(fpath, O_RDWR);
+ if (fd < 0) {
+ warn("open(%s) as root", fpath);
+ goto out;
+ }
+ ch = 0;
+ if (write(fd, &ch, sizeof(ch)) < 0) {
+ warn("write(%s) as root", fpath);
+ goto out;
+ }
+ close(fd);
+ confirm_setuid(fpath, "write as root");
+ (void)unlink(fpath);
+
+ /*
+ * extwrite() with privilege.
+ */
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0600 | S_ISUID);
+ if (extattr_set_file(fpath, EA_NAMESPACE, EA_NAME, EA_DATA, EA_SIZE)
+ < 0) {
+ warn("extattr_set_file(%s, user, %s, %s, %d) as root",
+ fpath, EA_NAME, EA_DATA, EA_SIZE);
+ goto out;
+ }
+ confirm_setuid(fpath, "extwrite as root");
+ (void)unlink(fpath);
+
+ /*
+ * chown() without privilege.
+ */
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600 | S_ISUID);
+ set_euid(UID_OWNER);
+ if (chown(fpath, -1, GID_OTHER) < 0)
+ warn("chown(%s, -1, %d) as !root", fpath, GID_OTHER);
+ set_euid(UID_ROOT);
+ confirm_notsetuid(fpath, "chown as !root");
+ (void)unlink(fpath);
+
+ /*
+ * write() without privilege.
+ */
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600 | S_ISUID);
+ set_euid(UID_OWNER);
+ fd = open(fpath, O_RDWR);
+ if (fd < 0) {
+ warn("open(%s) as !root", fpath);
+ goto out;
+ }
+ ch = 0;
+ if (write(fd, &ch, sizeof(ch)) < 0) {
+ warn("write(%s) as !root", fpath);
+ goto out;
+ }
+ close(fd);
+ set_euid(UID_ROOT);
+ confirm_notsetuid(fpath, "write as !root");
+ (void)unlink(fpath);
+
+ /*
+ * extwrite() without privilege.
+ */
+ setup_file(fpath, UID_OWNER, GID_OWNER, 0600 | S_ISUID);
+ set_euid(UID_OWNER);
+ if (extattr_set_file(fpath, EA_NAMESPACE, EA_NAME, EA_DATA, EA_SIZE)
+ < 0) {
+ warn("extattr_set_file(%s, user, %s, %s, %d) as !root",
+ fpath, EA_NAME, EA_DATA, EA_SIZE);
+ goto out;
+ }
+ set_euid(UID_ROOT);
+ confirm_notsetuid(fpath, "extwrite as !root");
+ (void)unlink(fpath);
+
+out:
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
diff --git a/tools/regression/priv/priv_vfs_extattr_system.c b/tools/regression/priv/priv_vfs_extattr_system.c
new file mode 100644
index 0000000..d67c550
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_extattr_system.c
@@ -0,0 +1,96 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that privilege is required to write to the system extended attribute
+ * namespace.
+ */
+
+#include <sys/types.h>
+#include <sys/extattr.h>
+
+#include <err.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+#define EA_NAMESPACE EXTATTR_NAMESPACE_SYSTEM
+#define EA_NAME "test"
+#define EA_DATA "test"
+#define EA_SIZE strlen(EA_DATA)
+
+void
+priv_vfs_extattr_system(void)
+{
+ char fpath[1024];
+ int error;
+
+ assert_root();
+
+ /*
+ * Set file perms so that discretionary access control would grant
+ * write rights on non-system EAs on the file.
+ */
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0666);
+
+ /*
+ * Try with privilege.
+ */
+ if (extattr_set_file(fpath, EA_NAMESPACE, EA_NAME, EA_DATA, EA_SIZE)
+ < 0) {
+ warn("extattr_set_file(SYSTEM, %s, %s, %d) as root",
+ EA_NAME, EA_DATA, EA_SIZE);
+ goto out;
+ }
+
+ set_euid(UID_OTHER);
+
+ /*
+ * Try without privilege.
+ */
+ error = extattr_set_file(fpath, EA_NAMESPACE, EA_NAME, EA_DATA,
+ EA_SIZE);
+ if (error == 0) {
+ warn("extattr_set_file(SYSTEM, %s, %s, %d) succeeded as !root",
+ EA_NAME, EA_DATA, EA_SIZE);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("extattr_set_file(SYSTEM, %s, %s, %d) wrong errno %d "
+ "as !root", EA_NAME, EA_DATA, EA_SIZE, errno);
+ goto out;
+ }
+out:
+ seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
diff --git a/tools/regression/priv/priv_vfs_fhopen.c b/tools/regression/priv/priv_vfs_fhopen.c
new file mode 100644
index 0000000..cb4006d
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_fhopen.c
@@ -0,0 +1,92 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Confirm that calls to fhopen() require privilege, trying with, and
+ * without. We create a temporary file and grab the file handle using
+ * getfh() before starting.
+ */
+
+#include <sys/param.h>
+#include <sys/mount.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_vfs_fhopen(void)
+{
+ char fpath[1024];
+ fhandle_t fh;
+ int fd;
+
+ assert_root();
+
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0644);
+
+ if (getfh(fpath, &fh) < 0) {
+ warn("getfh(%s)", fpath);
+ goto out;
+ }
+
+ /*
+ * First, try with privilege.
+ */
+ fd = fhopen(&fh, O_RDONLY);
+ if (fd < 0) {
+ warn("fhopen(%s) as root", fpath);
+ goto out;
+ }
+ close(fd);
+
+ /*
+ * Now, without privilege.
+ */
+ set_euid(UID_OTHER);
+
+ fd = fhopen(&fh, O_RDONLY);
+ if (fd >= 0) {
+ warnx("fhopen(%s) succeeded as !root", fpath);
+ close(fd);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("fhopen(%s) wrong errno %d as !root", fpath, errno);
+ goto out;
+ }
+out:
+ seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
diff --git a/tools/regression/priv/priv_vfs_fhstat.c b/tools/regression/priv/priv_vfs_fhstat.c
new file mode 100644
index 0000000..c8e58e8
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_fhstat.c
@@ -0,0 +1,89 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Confirm that calls to fhstat() require privilege, trying with, and
+ * without. We create a temporary file and grab the file handle using
+ * getfh() before starting.
+ */
+
+#include <sys/param.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_vfs_fhstat(void)
+{
+ char fpath[1024];
+ struct stat sb;
+ fhandle_t fh;
+ int error;
+
+ assert_root();
+
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0644);
+
+ if (getfh(fpath, &fh) < 0) {
+ warn("getfh(%s)", fpath);
+ goto out;
+ }
+
+ /*
+ * First, try with privilege.
+ */
+ if (fhstat(&fh, &sb) < 0) {
+ warn("fhstat(%s) as root", fpath);
+ goto out;
+ }
+
+ /*
+ * Now, without privilege.
+ */
+ set_euid(UID_OTHER);
+ error = fhstat(&fh, &sb);
+ if (error == 0) {
+ warn("fhstat(%s) succeeded as !root", fpath);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("fhstat(%s) wrong errno %d as !root", fpath, errno);
+ goto out;
+ }
+out:
+ seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
diff --git a/tools/regression/priv/priv_vfs_fhstatfs.c b/tools/regression/priv/priv_vfs_fhstatfs.c
new file mode 100644
index 0000000..4709fe2
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_fhstatfs.c
@@ -0,0 +1,89 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Confirm that calls to fhstatfs() require privilege, trying with, and
+ * without. We create a temporary file and grab the file handle using
+ * getfh() before starting.
+ */
+
+#include <sys/param.h>
+#include <sys/mount.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_vfs_fhstatfs(void)
+{
+ char fpath[1024];
+ struct statfs sf;
+ fhandle_t fh;
+ int error;
+
+ assert_root();
+
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0644);
+
+ if (getfh(fpath, &fh) < 0) {
+ warn("getfh(%s)", fpath);
+ goto out;
+ }
+
+ /*
+ * First, try with privilege.
+ */
+ if (fhstatfs(&fh, &sf) < 0) {
+ warn("fhstatfs(%s) as root", fpath);
+ goto out;
+ }
+
+ /*
+ * Now, without privilege.
+ */
+ set_euid(UID_OTHER);
+
+ error = fhstatfs(&fh, &sf);
+ if (error == 0) {
+ warnx("fhstatfs(%s) succeeded as !root", fpath);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("fhstatfs(%s) wrong errno %d as !root", fpath, errno);
+ goto out;
+ }
+out:
+ seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
diff --git a/tools/regression/priv/priv_vfs_generation.c b/tools/regression/priv/priv_vfs_generation.c
new file mode 100644
index 0000000..2ccca79
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_generation.c
@@ -0,0 +1,113 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Confirm that a generation number isn't returned by stat() when not running
+ * with privilege. In order to differentiate between a generation of 0 and
+ * a generation not being returned, we have to create a temporary file known
+ * to have a non-0 generation. We try up to 10 times, and then give up,
+ * which is non-ideal, but better than not testing for a problem.
+ */
+
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+/*
+ * Can't use setup_file() since the resulting file needs to have specific
+ * properties.
+ */
+void
+priv_vfs_generation(void)
+{
+ char fpath[1024] = "/tmp/priv.XXXXXXXXXX";
+ struct stat sb;
+ int fd, i;
+
+ assert_root();
+
+ /*
+ * Create a file with a non-0 generation number. Try ten times,
+ * which gives a high chance of succeeds, fail otherwise. Not ideal,
+ * since we can't distinguish the file having a generation of 0 from
+ * not being able to query it for access control reasons. The perils
+ * of an API that changes behavior based on lack of privilege rather
+ * than failing...
+ */
+ for (i = 0; i < 10; i++) {
+ fd = mkstemp(fpath);
+ if (fd < 0)
+ err(-1, "mkstemp");
+ if (fstat(fd, &sb) < 0) {
+ warn("fstat(%s)", fpath);
+ close(fd);
+ goto out;
+ }
+ if (sb.st_gen != 0)
+ break;
+ close(fd);
+ (void)unlink(fpath);
+ strcpy(fpath, "/tmp/generation.XXXXXXXXXX");
+ fd = -1;
+ }
+ if (fd == -1)
+ errx(-1,
+ "could not create file with non-0 generation as root");
+ close(fd);
+
+ /*
+ * We've already tested that fstat() works, but try stat() to be
+ * consistent between privileged and unprivileged tests.
+ */
+ if (stat(fpath, &sb) < 0) {
+ warn("stat(%s) as root", fpath);
+ goto out;
+ }
+
+ set_euid(UID_OTHER);
+
+ if (stat(fpath, &sb) < 0) {
+ warn("stat(%s) as !root", fpath);
+ goto out;
+ }
+
+ if (sb.st_gen != 0)
+ warn("stat(%s) returned generation as !root", fpath);
+
+out:
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
diff --git a/tools/regression/priv/priv_vfs_getfh.c b/tools/regression/priv/priv_vfs_getfh.c
new file mode 100644
index 0000000..ff5d6fe
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_getfh.c
@@ -0,0 +1,78 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Check that getfh() requires privilege; run it with, and without,
+ * privilege.
+ */
+
+#include <sys/param.h>
+#include <sys/mount.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_vfs_getfh(void)
+{
+ char fpath[1024];
+ fhandle_t fh;
+ int error;
+
+ assert_root();
+
+ setup_file(fpath, UID_ROOT, GID_WHEEL, 0644);
+
+ if (getfh(fpath, &fh) < 0) {
+ warn("getfh(%s) as root", fpath);
+ goto out;
+ }
+
+ set_euid(UID_OTHER);
+
+ error = getfh(fpath, &fh);
+ if (error == 0) {
+ warnx("getfh(%s) succeeded as !root", fpath);
+ goto out;
+ }
+
+ if (errno != EPERM) {
+ warn("getfh(%s) wrong errno %d as !root", fpath, errno);
+ goto out;
+ }
+
+out:
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
diff --git a/tools/regression/priv/priv_vfs_read_write.c b/tools/regression/priv/priv_vfs_read_write.c
new file mode 100644
index 0000000..c7f479d
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_read_write.c
@@ -0,0 +1,370 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * This is a joint test of both the read and write privileges with respect to
+ * discretionary file system access control (permissions). Only permissions,
+ * not ACL semantics, and only privilege-related checks are performed.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+struct test_arguments {
+ int open_flags;
+ uid_t proc_uid;
+ gid_t proc_gid;
+ uid_t file_uid;
+ gid_t file_gid;
+};
+
+/*
+ * Rather special-purpose, don't reuse. Will need updating if anything other
+ * than O_RDONLY and O_WRONLY are to be used in tests.
+ */
+static const char *
+flags_to_string(int flags)
+{
+
+ switch (flags) {
+ case O_RDONLY:
+ return ("O_RDONLY");
+
+ case O_WRONLY:
+ return ("O_WRONLY");
+
+ default:
+ return ("unknown");
+ }
+}
+
+static void
+test_perm(struct test_arguments ta, mode_t file_mode, int expected)
+{
+ uid_t proc_uid, file_uid;
+ gid_t proc_gid, file_gid;
+ int fd, open_flags;
+ char fpath[1024];
+
+ proc_uid = ta.proc_uid;
+ proc_gid = ta.proc_gid;
+ file_uid = ta.file_uid;
+ file_gid = ta.file_gid;
+ open_flags = ta.open_flags;
+
+ setup_file(fpath, file_uid, file_gid, file_mode);
+ set_creds(proc_uid, proc_gid);
+
+ fd = open(fpath, open_flags);
+
+ if (expected == 0) {
+ if (fd <= 0) {
+ warn("test_perm(%s, %d, %d, %d, %d, %04o, %d) "
+ "returned %d instead of %d",
+ flags_to_string(open_flags), proc_uid, proc_gid,
+ file_uid, file_gid, file_mode, expected,
+ errno, expected);
+ restore_creds();
+ (void)unlink(fpath);
+ exit(-1);
+ }
+ close(fd);
+ } else {
+ if (fd >= 0) {
+ warnx("test_perm(%s, %d, %d, %d, %d, %04o, %d)"
+ " returned 0 instead of %d",
+ flags_to_string(open_flags), proc_uid, proc_gid,
+ file_uid, file_gid, file_mode, expected,
+ expected);
+ close(fd);
+ restore_creds();
+ (void)unlink(fpath);
+ exit(-1);
+ } else if (errno != expected) {
+ warn("test_perm(%s, %d, %d, %d, %d, %04o, %d)"
+ " returned %d instead of %d",
+ flags_to_string(open_flags), proc_uid, proc_gid,
+ file_uid, file_gid, file_mode, expected,
+ errno, expected);
+ restore_creds();
+ (void)unlink(fpath);
+ exit(-1);
+ }
+ }
+
+ restore_creds();
+ (void)unlink(fpath);
+}
+
+static const gid_t gidset[] = { GID_WHEEL };
+
+static void
+preamble(void)
+{
+
+ if (getuid() != UID_ROOT)
+ errx(-1, "must be run as root");
+ if (setgroups(1, gidset) < 0)
+ err(-1, "setgroups(1, {%d})", GID_WHEEL);
+}
+
+void
+priv_vfs_read(void)
+{
+ struct test_arguments ta;
+
+ preamble();
+
+ ta.open_flags = O_RDONLY;
+
+ /*
+ * Privileged user and file owner. All tests should pass.
+ */
+ ta.proc_uid = UID_ROOT;
+ ta.proc_gid = GID_WHEEL;
+ ta.file_uid = UID_ROOT;
+ ta.file_gid = GID_WHEEL;
+
+ test_perm(ta, 0000, 0);
+ test_perm(ta, 0100, 0);
+ test_perm(ta, 0200, 0);
+ test_perm(ta, 0300, 0);
+ test_perm(ta, 0400, 0);
+ test_perm(ta, 0500, 0);
+ test_perm(ta, 0600, 0);
+ test_perm(ta, 0700, 0);
+
+ /*
+ * Privileged user and file group. All tests should pass.
+ */
+ ta.proc_uid = UID_ROOT;
+ ta.proc_gid = GID_WHEEL;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_WHEEL;
+
+ test_perm(ta, 0000, 0);
+ test_perm(ta, 0010, 0);
+ test_perm(ta, 0020, 0);
+ test_perm(ta, 0030, 0);
+ test_perm(ta, 0040, 0);
+ test_perm(ta, 0050, 0);
+ test_perm(ta, 0060, 0);
+ test_perm(ta, 0070, 0);
+
+ /*
+ * Privileged user and file other. All tests should pass.
+ */
+ ta.proc_uid = UID_ROOT;
+ ta.proc_gid = GID_WHEEL;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_OWNER;
+
+ test_perm(ta, 0000, 0);
+ test_perm(ta, 0001, 0);
+ test_perm(ta, 0002, 0);
+ test_perm(ta, 0003, 0);
+ test_perm(ta, 0004, 0);
+ test_perm(ta, 0005, 0);
+ test_perm(ta, 0006, 0);
+ test_perm(ta, 0007, 0);
+
+ /*
+ * Unprivileged user and file owner. Various DAC failures.
+ */
+ ta.proc_uid = UID_OWNER;
+ ta.proc_gid = GID_OWNER;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_OWNER;
+
+ test_perm(ta, 0000, EACCES);
+ test_perm(ta, 0100, EACCES);
+ test_perm(ta, 0200, EACCES);
+ test_perm(ta, 0300, EACCES);
+ test_perm(ta, 0400, 0);
+ test_perm(ta, 0500, 0);
+ test_perm(ta, 0600, 0);
+ test_perm(ta, 0700, 0);
+
+ /*
+ * Unprivileged user and file group. Various DAC failures.
+ */
+ ta.proc_uid = UID_OTHER;
+ ta.proc_gid = GID_OWNER;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_OWNER;
+
+ test_perm(ta, 0000, EACCES);
+ test_perm(ta, 0010, EACCES);
+ test_perm(ta, 0020, EACCES);
+ test_perm(ta, 0030, EACCES);
+ test_perm(ta, 0040, 0);
+ test_perm(ta, 0050, 0);
+ test_perm(ta, 0060, 0);
+ test_perm(ta, 0070, 0);
+
+ /*
+ * Unprivileged user and file other. Various DAC failures.
+ */
+ ta.proc_uid = UID_OTHER;
+ ta.proc_gid = GID_OTHER;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_OWNER;
+
+ test_perm(ta, 0000, EACCES);
+ test_perm(ta, 0001, EACCES);
+ test_perm(ta, 0002, EACCES);
+ test_perm(ta, 0003, EACCES);
+ test_perm(ta, 0004, 0);
+ test_perm(ta, 0005, 0);
+ test_perm(ta, 0006, 0);
+ test_perm(ta, 0007, 0);
+}
+
+void
+priv_vfs_write(void)
+{
+ struct test_arguments ta;
+
+ preamble();
+
+ ta.open_flags = O_WRONLY;
+
+ /*
+ * Privileged user and file owner. All tests should pass.
+ */
+ ta.proc_uid = UID_ROOT;
+ ta.proc_gid = GID_WHEEL;
+ ta.file_uid = UID_ROOT;
+ ta.file_gid = GID_WHEEL;
+
+ test_perm(ta, 0000, 0);
+ test_perm(ta, 0100, 0);
+ test_perm(ta, 0200, 0);
+ test_perm(ta, 0300, 0);
+ test_perm(ta, 0400, 0);
+ test_perm(ta, 0500, 0);
+ test_perm(ta, 0600, 0);
+ test_perm(ta, 0700, 0);
+
+ /*
+ * Privileged user and file group. All tests should pass.
+ */
+ ta.proc_uid = UID_ROOT;
+ ta.proc_gid = GID_WHEEL;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_WHEEL;
+
+ test_perm(ta, 0000, 0);
+ test_perm(ta, 0010, 0);
+ test_perm(ta, 0020, 0);
+ test_perm(ta, 0030, 0);
+ test_perm(ta, 0040, 0);
+ test_perm(ta, 0050, 0);
+ test_perm(ta, 0060, 0);
+ test_perm(ta, 0070, 0);
+
+ /*
+ * Privileged user and file other. All tests should pass.
+ */
+ ta.proc_uid = UID_ROOT;
+ ta.proc_gid = GID_WHEEL;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_OWNER;
+
+ test_perm(ta, 0000, 0);
+ test_perm(ta, 0001, 0);
+ test_perm(ta, 0002, 0);
+ test_perm(ta, 0003, 0);
+ test_perm(ta, 0004, 0);
+ test_perm(ta, 0005, 0);
+ test_perm(ta, 0006, 0);
+ test_perm(ta, 0007, 0);
+
+ /*
+ * Unprivileged user and file owner. Various DAC failures.
+ */
+ ta.proc_uid = UID_OWNER;
+ ta.proc_gid = GID_OWNER;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_OWNER;
+
+ test_perm(ta, 0000, EACCES);
+ test_perm(ta, 0100, EACCES);
+ test_perm(ta, 0200, 0);
+ test_perm(ta, 0300, 0);
+ test_perm(ta, 0400, EACCES);
+ test_perm(ta, 0500, EACCES);
+ test_perm(ta, 0600, 0);
+ test_perm(ta, 0700, 0);
+
+ /*
+ * Unprivileged user and file group. Various DAC failures.
+ */
+ ta.proc_uid = UID_OTHER;
+ ta.proc_gid = GID_OWNER;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_OWNER;
+
+ test_perm(ta, 0000, EACCES);
+ test_perm(ta, 0010, EACCES);
+ test_perm(ta, 0020, 0);
+ test_perm(ta, 0030, 0);
+ test_perm(ta, 0040, EACCES);
+ test_perm(ta, 0050, EACCES);
+ test_perm(ta, 0060, 0);
+ test_perm(ta, 0070, 0);
+
+ /*
+ * Unprivileged user and file other. Various DAC failures.
+ */
+ ta.proc_uid = UID_OTHER;
+ ta.proc_gid = GID_OTHER;
+ ta.file_uid = UID_OWNER;
+ ta.file_gid = GID_OWNER;
+
+ test_perm(ta, 0000, EACCES);
+ test_perm(ta, 0001, EACCES);
+ test_perm(ta, 0002, 0);
+ test_perm(ta, 0003, 0);
+ test_perm(ta, 0004, EACCES);
+ test_perm(ta, 0005, EACCES);
+ test_perm(ta, 0006, 0);
+ test_perm(ta, 0007, 0);
+}
diff --git a/tools/regression/priv/priv_vfs_setgid.c b/tools/regression/priv/priv_vfs_setgid.c
new file mode 100644
index 0000000..b763ef6
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_setgid.c
@@ -0,0 +1,143 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that privilege is required to set the sgid bit on a file with a group
+ * that isn't in the process credential. The file uid owner is set to the
+ * uid being tested with, as we are not interested in testing privileges
+ * associated with file ownership.
+ */
+
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "main.h"
+
+static const gid_t gidset_without[] = {GID_WHEEL};
+static const gid_t gidset_with[] = {GID_WHEEL, GID_OWNER};
+
+void
+priv_vfs_setgid(void)
+{
+ char fpath[1024];
+ int error, fd;
+
+ assert_root();
+
+ setup_file(fpath, UID_ROOT, GID_OWNER, 0644);
+
+ if (setgroups(1, gidset_without) < 0) {
+ warn("setgroups(1, {%d})", gidset_without[0]);
+ goto out;
+ }
+
+ fd = open(fpath, O_RDWR);
+ if (fd < 0) {
+ warn("open(%s, O_RDWR)", fpath);
+ goto out;
+ }
+
+ /*
+ * With privilege, set mode on file.
+ */
+ if (fchmod(fd, 0600 | S_ISGID) < 0) {
+ warn("fchmod(%s, 0600 | S_ISGID) as root", fpath);
+ goto out;
+ }
+
+ /*
+ * Reset mode and chown file before dropping privilege.
+ */
+ if (fchmod(fd, 0600) < 0) {
+ warn("fchmod(%s, 0600) as root", fpath);
+ goto out;
+ }
+
+ if (fchown(fd, UID_OWNER, GID_OWNER) < 0) {
+ warn("fchown(%s, %d, %d) as root", fpath, UID_OWNER,
+ GID_OTHER);
+ goto out;
+ }
+
+ /*
+ * Drop privilege.
+ */
+ set_euid(UID_OWNER);
+
+ /*
+ * Without privilege, set mode on file.
+ */
+ error = fchmod(fd, 0600 | S_ISGID);
+ if (error == 0) {
+ warnx("fchmod(%s, 0600 | S_ISGID) succeeded as !root",
+ fpath);
+ goto out;
+ }
+ if (errno != EPERM) {
+ warn("fchmod(%s, 0600 | S_ISGID) wrong errno %d as !root",
+ fpath, errno);
+ goto out;
+ }
+
+ /*
+ * Turn privilege back on so that we confirm privilege isn't required
+ * if we are a group member of the file's group.
+ */
+ set_euid(UID_ROOT);
+
+ if (setgroups(2, gidset_with) < 0) {
+ warn("setgroups(2, {%d, %d})", gidset_with[0],
+ gidset_with[1]);
+ goto out;
+ }
+
+ if (seteuid(UID_OWNER) < 0) {
+ warn("seteuid(%d) pass 2", UID_OWNER);
+ goto out;
+ }
+
+ /*
+ * Without privilege, set mode on file (this time with right gid).
+ */
+ if (fchmod(fd, 0600 | S_ISGID) < 0) {
+ warnx("fchmod(%s, 0600 | S_ISGID) pass 2 as !root", fpath);
+ sleep(10);
+ goto out;
+ }
+
+out:
+ seteuid(UID_ROOT);
+ (void)unlink(fpath);
+}
diff --git a/tools/regression/priv/priv_vfs_stickyfile.c b/tools/regression/priv/priv_vfs_stickyfile.c
new file mode 100644
index 0000000..11c5d5a
--- /dev/null
+++ b/tools/regression/priv/priv_vfs_stickyfile.c
@@ -0,0 +1,140 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Check that privilege is required to set the sticky bit on a file, but not
+ * a directory. Try with and without privilege.
+ */
+
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+static void
+cleanup(const char *fpath, const char *dpath)
+{
+
+ (void)seteuid(UID_ROOT);
+ (void)unlink(fpath);
+ if (dpath != NULL)
+ (void)rmdir(dpath);
+}
+
+void
+priv_vfs_stickyfile(void)
+{
+ char fpath[1024] = "/tmp/stickyfile.XXXXXXXXXXX";
+ char dpath[1024] = "/tmp/stickyfile.XXXXXXXXXXX", *dpathp;
+ int error, fd;
+
+ assert_root();
+
+ fd = mkstemp(fpath);
+ if (fd < 0)
+ err(-1, "mkstemp");
+
+ dpathp = mkdtemp(dpath);
+ if (dpathp == NULL) {
+ warn("mkdtemp");
+ goto out;
+ }
+
+ /*
+ * First, with privilege, set and clear the sticky bit on the file
+ * and directory.
+ */
+ if (fchmod(fd, 0600 | S_ISTXT) < 0) {
+ warn("fchmod(%s, 0600 | S_ISTXT) on file as root", fpath);
+ goto out;
+ }
+
+ if (chmod(dpathp, 0700 | S_ISTXT) < 0) {
+ warn("chmod(%s, 0600 | S_ISTXT) on dir as root", dpath);
+ goto out;
+ }
+
+ /*
+ * Reset to remove sticky bit before changing credential.
+ */
+ if (fchmod(fd, 0600) < 0) {
+ warn("fchmod(%s, 0600) on file as root", fpath);
+ goto out;
+ }
+
+ if (chmod(dpath, 0700) < 0) {
+ warn("chmod(%s, 0600) on dir as root", dpath);
+ goto out;
+ }
+
+ /*
+ * Chown the file and directory to target user -- we're checking for
+ * the specific right to set the sticky bit, not the general right to
+ * chmod().
+ */
+ if (fchown(fd, UID_OTHER, -1) < 0) {
+ warn("fchown(%s, %d, -1)", fpath, UID_OTHER);
+ goto out;
+ }
+
+ if (chown(dpath, UID_OTHER, -1) < 0) {
+ warn("chown(%s, %d, -1)", fpath, UID_OTHER);
+ goto out;
+ }
+
+ /*
+ * Change credential and try again.
+ */
+ set_euid(UID_OTHER);
+
+ error = fchmod(fd, 0600 | S_ISTXT);
+ if (error == 0) {
+ warnx("fchmod(%s, 0600 | S_ISTXT) succeeded on file as "
+ "!root", fpath);
+ goto out;
+ }
+ if (errno != EFTYPE) {
+ warn("fchmod(%s, 0600 | S_ISTXT) wrong errno %d as !root",
+ fpath, errno);
+ goto out;
+ }
+
+ if (chmod(dpathp, 0700 | S_ISTXT) < 0) {
+ warn("chmod(%s, 0600 | S_ISTXT) on dir as !root", dpath);
+ goto out;
+ }
+out:
+ setuid(UID_ROOT);
+ cleanup(fpath, dpathp);
+}
diff --git a/tools/regression/priv/priv_vm_madv_protect.c b/tools/regression/priv/priv_vm_madv_protect.c
new file mode 100644
index 0000000..737adbf
--- /dev/null
+++ b/tools/regression/priv/priv_vm_madv_protect.c
@@ -0,0 +1,64 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that madvise(..., MADV_PROTECT) requires privilege by running it first
+ * with privilege, then again without.
+ */
+
+#include <sys/types.h>
+#include <sys/mman.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_vm_madv_protect(void)
+{
+ int error;
+
+ assert_root();
+
+ error = madvise(NULL, 0, MADV_PROTECT);
+ if (error)
+ err(-1, "madvise(..., MADV_PROTECT) as root");
+
+ set_euid(UID_OTHER);
+
+ error = madvise(NULL, 0, MADV_PROTECT);
+ if (error == 0)
+ errx(-1, "mlock as !root succeeded");
+ if (errno != EPERM)
+ err(-1, "mlock as !root wrong errno %d", errno);
+}
diff --git a/tools/regression/priv/priv_vm_mlock.c b/tools/regression/priv/priv_vm_mlock.c
new file mode 100644
index 0000000..3da06d3
--- /dev/null
+++ b/tools/regression/priv/priv_vm_mlock.c
@@ -0,0 +1,64 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that mlock() requires privilege by running it first with privilege,
+ * then again without.
+ */
+
+#include <sys/types.h>
+#include <sys/mman.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_vm_mlock(void)
+{
+ int error;
+
+ assert_root();
+
+ error = mlock(&error, getpagesize());
+ if (error)
+ err(-1, "mlock as root");
+
+ set_euid(UID_OTHER);
+
+ error = mlock(&error, getpagesize());
+ if (error == 0)
+ errx(-1, "mlock as !root succeeded");
+ if (errno != EPERM)
+ err(-1, "mlock as !root wrong errno %d", errno);
+}
diff --git a/tools/regression/priv/priv_vm_munlock.c b/tools/regression/priv/priv_vm_munlock.c
new file mode 100644
index 0000000..9e8713a
--- /dev/null
+++ b/tools/regression/priv/priv_vm_munlock.c
@@ -0,0 +1,64 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Test that munlock() requires privilege by running it first with privilege,
+ * then again without.
+ */
+
+#include <sys/types.h>
+#include <sys/mman.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "main.h"
+
+void
+priv_vm_munlock(void)
+{
+ int error;
+
+ assert_root();
+
+ error = munlock(&error, getpagesize());
+ if (error)
+ err(-1, "munlock as root");
+
+ set_euid(UID_OTHER);
+
+ error = munlock(&error, getpagesize());
+ if (error == 0)
+ errx(-1, "munlock as !root succeeded");
+ if (errno != EPERM)
+ err(-1, "munlock as !root wrong errno %d", errno);
+}
diff --git a/tools/regression/priv/test_utimes.c b/tools/regression/priv/test_utimes.c
new file mode 100644
index 0000000..51cef52
--- /dev/null
+++ b/tools/regression/priv/test_utimes.c
@@ -0,0 +1,153 @@
+/*-
+ * Copyright (c) 2006 nCircle Network Security, Inc.
+ * All rights reserved.
+ *
+ * This software was developed by Robert N. M. Watson for the TrustedBSD
+ * Project under contract to nCircle Network Security, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR, NCIRCLE NETWORK SECURITY,
+ * INC., OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * If times is NULL, ... The caller must be the owner of the file, have
+ * permission to write the file, or be the super-user.
+ *
+ * If times is non-NULL, ... The caller must be the owner of the file or be
+ * the super-user.
+ *
+ * To test these, create a temporary file owned by uid_owner; then run a
+ * series of tests as root, owner, and other, along with various modes, to
+ * see what is permitted, and if not, what error is returned.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "main.h"
+
+static int
+try_utimes(const char *path, mode_t mode, uid_t uid,
+ struct timeval *timestamp, int expected)
+{
+ int error;
+
+ if (chmod(path, mode) < 0) {
+ warn("try_utimes(%s, %d, %d, 0x%08x): chmod", path, mode, uid,
+ (u_int)timestamp);
+ (void)unlink(path);
+ exit(-1);
+ }
+
+ if (seteuid(uid) < 0) {
+ warn("try_utimes(%s, %d, %d, 0x%08x): seteuid(%d)", path,
+ mode, uid, (u_int)timestamp, uid);
+ (void)unlink(path);
+ exit(-1);
+ }
+
+ error = utimes(path, timestamp);
+
+ if (seteuid(UID_ROOT) < 0) {
+ warn("try_utimes(%s, %d, %d, 0x%08x): seteuid(UID_ROOT)",
+ path, mode, uid, (u_int)timestamp);
+ (void)unlink(path);
+ exit(-1);
+ }
+
+ if (expected == 0) {
+ if (error != 0) {
+ (void)unlink(path);
+ errx(-1, "try_utimes(%s, 0%o, %d, 0x%08x) failed %d",
+ path, mode, uid, (u_int)timestamp, errno);
+ }
+ return (0);
+ }
+
+ if (expected == errno)
+ return (0);
+
+ (void)unlink(path);
+ errx(-1, "try_utimes(%s, 0%o, %d, 0x%08x) wrong err %d", path, mode,
+ uid, (u_int)timestamp, errno);
+}
+
+void
+test_utimes(void)
+{
+ char path[128] = "/tmp/utimes.XXXXXXXXX";
+ struct timeval timestamp[2];
+ int fd;
+
+ if (getuid() != 0)
+ errx(-1, "must be run as root");
+
+ fd = mkstemp(path);
+ if (fd == -1)
+ err(-1, "mkstemp");
+
+ if (chown(path, UID_OWNER, -1) < 0) {
+ warn("chown(%s, %d)", path, UID_OWNER);
+ (void)unlink(path);
+ return;
+ }
+
+ bzero(timestamp, sizeof(timestamp));
+
+ try_utimes(path, 0444, UID_ROOT, NULL, 0);
+ try_utimes(path, 0444, UID_OWNER, NULL, 0);
+ /* Denied by permissions. */
+ try_utimes(path, 0444, UID_OTHER, NULL, EACCES);
+
+ try_utimes(path, 0444, UID_ROOT, timestamp, 0);
+ try_utimes(path, 0444, UID_OWNER, timestamp, 0);
+ try_utimes(path, 0444, UID_OTHER, timestamp, EPERM);
+
+ try_utimes(path, 0644, UID_ROOT, NULL, 0);
+ try_utimes(path, 0644, UID_OWNER, NULL, 0);
+ /* Denied by permissions. */
+ try_utimes(path, 0644, UID_OTHER, NULL, EACCES);
+
+ try_utimes(path, 0644, UID_ROOT, timestamp, 0);
+ try_utimes(path, 0644, UID_OWNER, timestamp, 0);
+ /* Denied as not owner. */
+ try_utimes(path, 0644, UID_OTHER, timestamp, EPERM);
+
+ try_utimes(path, 0666, UID_ROOT, NULL, 0);
+ try_utimes(path, 0666, UID_OWNER, NULL, 0);
+ try_utimes(path, 0666, UID_OTHER, NULL, 0);
+
+ try_utimes(path, 0666, UID_ROOT, timestamp, 0);
+ try_utimes(path, 0666, UID_OWNER, timestamp, 0);
+ /* Denied as not owner. */
+ try_utimes(path, 0666, UID_OTHER, timestamp, EPERM);
+
+ (void)unlink(path);
+}
diff --git a/tools/regression/pthread/cv_cancel1/Makefile b/tools/regression/pthread/cv_cancel1/Makefile
new file mode 100644
index 0000000..6fe38c7
--- /dev/null
+++ b/tools/regression/pthread/cv_cancel1/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG= cv_cancel1
+NO_MAN=
+
+LDADD= -lpthread
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/pthread/cv_cancel1/cv_cancel1.c b/tools/regression/pthread/cv_cancel1/cv_cancel1.c
new file mode 100644
index 0000000..cacad44
--- /dev/null
+++ b/tools/regression/pthread/cv_cancel1/cv_cancel1.c
@@ -0,0 +1,85 @@
+/*-
+ * Copyright (c) 2006, David Xu <davidxu@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice unmodified, this list of conditions, and the following
+ * disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ *
+ */
+#include <pthread.h>
+#include <stdio.h>
+
+#define NLOOPS 10
+
+pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
+pthread_cond_t cv = PTHREAD_COND_INITIALIZER;
+
+int wake;
+int stop;
+
+void *
+thr_routine(void *arg)
+{
+ pthread_mutex_lock(&m);
+ while (wake == 0)
+ pthread_cond_wait(&cv, &m);
+ pthread_mutex_unlock(&m);
+
+ while (stop == 0)
+ pthread_yield();
+ return (NULL);
+}
+
+int main(int argc, char **argv)
+{
+ pthread_t td;
+ int i;
+ void *result;
+
+ pthread_setconcurrency(1);
+ for (i = 0; i < NLOOPS; ++i) {
+ stop = 0;
+ wake = 0;
+
+ pthread_create(&td, NULL, thr_routine, NULL);
+ sleep(1);
+ printf("trying: %d\n", i);
+ pthread_mutex_lock(&m);
+ wake = 1;
+ pthread_cond_signal(&cv);
+ pthread_cancel(td);
+ pthread_mutex_unlock(&m);
+ stop = 1;
+ result = NULL;
+ pthread_join(td, &result);
+ if (result == PTHREAD_CANCELED) {
+ printf("the condition variable implementation does not\n"
+ "conform to SUSv3, a thread unblocked from\n"
+ "condition variable still can be canceled.\n");
+ return (1);
+ }
+ }
+
+ printf("OK\n");
+ return (0);
+}
diff --git a/tools/regression/redzone9/Makefile b/tools/regression/redzone9/Makefile
new file mode 100644
index 0000000..6de1535
--- /dev/null
+++ b/tools/regression/redzone9/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+KMOD= redzone
+SRCS= redzone.c
+
+.include <bsd.kmod.mk>
diff --git a/tools/regression/redzone9/README b/tools/regression/redzone9/README
new file mode 100644
index 0000000..87ca49a
--- /dev/null
+++ b/tools/regression/redzone9/README
@@ -0,0 +1,10 @@
+$FreeBSD$
+
+To verify that redzone(9) works properly:
+
+ # make
+ # make install
+ # kldload redzone
+ # sh test.sh
+
+And look at the logs/console output.
diff --git a/tools/regression/redzone9/redzone.c b/tools/regression/redzone9/redzone.c
new file mode 100644
index 0000000..1013738
--- /dev/null
+++ b/tools/regression/redzone9/redzone.c
@@ -0,0 +1,141 @@
+/*-
+ * Copyright (c) 2006 Pawel Jakub Dawidek <pjd@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/linker.h>
+#include <sys/module.h>
+#include <sys/malloc.h>
+#include <sys/sysctl.h>
+
+
+SYSCTL_NODE(_debug, OID_AUTO, redzone, CTLFLAG_RW, 0, "");
+
+#define REDZONE_MALLOC_UNDERFLOW 0
+#define REDZONE_MALLOC_OVERFLOW 1
+#define REDZONE_REALLOC_SMALLER_UNDERFLOW 2
+#define REDZONE_REALLOC_SMALLER_OVERFLOW 3
+#define REDZONE_REALLOC_BIGGER_UNDERFLOW 4
+#define REDZONE_REALLOC_BIGGER_OVERFLOW 5
+
+static int
+redzone_sysctl(SYSCTL_HANDLER_ARGS)
+{
+ u_char *p = NULL;
+ int error, val = 0;
+
+ error = sysctl_handle_int(oidp, &val, sizeof(val), req);
+ if (error != 0 || req->newptr == NULL)
+ return (0);
+ switch (arg2) {
+ case REDZONE_MALLOC_UNDERFLOW:
+ p = malloc(10, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ p[-1] = '\0';
+ break;
+ case REDZONE_MALLOC_OVERFLOW:
+ p = malloc(10, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ p[10] = '\0';
+ break;
+ case REDZONE_REALLOC_SMALLER_UNDERFLOW:
+ p = malloc(8192, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ p[-1] = '\0';
+ p = realloc(p, 10, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ break;
+ case REDZONE_REALLOC_SMALLER_OVERFLOW:
+ p = malloc(8192, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ p[8192] = '\0';
+ p = realloc(p, 10, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ break;
+ case REDZONE_REALLOC_BIGGER_UNDERFLOW:
+ p = malloc(10, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ p[-1] = '\0';
+ p = realloc(p, 8192, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ break;
+ case REDZONE_REALLOC_BIGGER_OVERFLOW:
+ p = malloc(10, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ p[10] = '\0';
+ p = realloc(p, 8192, M_TEMP, M_NOWAIT);
+ if (p == NULL)
+ return (ENOMEM);
+ break;
+ }
+ free(p, M_TEMP);
+ return (0);
+}
+SYSCTL_PROC(_debug_redzone, OID_AUTO, malloc_underflow, CTLTYPE_INT | CTLFLAG_RW,
+ NULL, REDZONE_MALLOC_UNDERFLOW, redzone_sysctl, "I", "");
+SYSCTL_PROC(_debug_redzone, OID_AUTO, malloc_overflow, CTLTYPE_INT | CTLFLAG_RW,
+ NULL, REDZONE_MALLOC_OVERFLOW, redzone_sysctl, "I", "");
+SYSCTL_PROC(_debug_redzone, OID_AUTO, realloc_smaller_underflow, CTLTYPE_INT | CTLFLAG_RW,
+ NULL, REDZONE_REALLOC_SMALLER_UNDERFLOW, redzone_sysctl, "I", "");
+SYSCTL_PROC(_debug_redzone, OID_AUTO, realloc_smaller_overflow, CTLTYPE_INT | CTLFLAG_RW,
+ NULL, REDZONE_REALLOC_SMALLER_OVERFLOW, redzone_sysctl, "I", "");
+SYSCTL_PROC(_debug_redzone, OID_AUTO, realloc_bigger_underflow, CTLTYPE_INT | CTLFLAG_RW,
+ NULL, REDZONE_REALLOC_BIGGER_UNDERFLOW, redzone_sysctl, "I", "");
+SYSCTL_PROC(_debug_redzone, OID_AUTO, realloc_bigger_overflow, CTLTYPE_INT | CTLFLAG_RW,
+ NULL, REDZONE_REALLOC_BIGGER_OVERFLOW, redzone_sysctl, "I", "");
+
+static int
+redzone_modevent(module_t mod, int type, void *data)
+{
+
+ switch (type) {
+ case MOD_LOAD:
+ case MOD_UNLOAD:
+ break;
+ default:
+ return (EOPNOTSUPP);
+ }
+ return (0);
+}
+static moduledata_t redzone_module = {
+ "redzone",
+ redzone_modevent,
+ NULL
+};
+DECLARE_MODULE(redzone, redzone_module, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
diff --git a/tools/regression/redzone9/test.sh b/tools/regression/redzone9/test.sh
new file mode 100644
index 0000000..b382458
--- /dev/null
+++ b/tools/regression/redzone9/test.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+# $FreeBSD$
+
+sysctl debug.redzone.malloc_underflow=1
+sysctl debug.redzone.malloc_overflow=1
+sysctl debug.redzone.realloc_smaller_underflow=1
+sysctl debug.redzone.realloc_smaller_overflow=1
+sysctl debug.redzone.realloc_bigger_underflow=1
+sysctl debug.redzone.realloc_bigger_overflow=1
diff --git a/tools/regression/security/access/Makefile b/tools/regression/security/access/Makefile
new file mode 100644
index 0000000..7ec3999
--- /dev/null
+++ b/tools/regression/security/access/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+PROG= testaccess
+NO_MAN=
+
+SRCS= testaccess.c
+CFLAGS += -Wall
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/security/access/testaccess.c b/tools/regression/security/access/testaccess.c
new file mode 100644
index 0000000..46bb01c
--- /dev/null
+++ b/tools/regression/security/access/testaccess.c
@@ -0,0 +1,360 @@
+/*-
+ * Copyright (c) 2001 Networks Associates Technology, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * Written at NAI Labs at Network Associates by Robert Watson for the
+ * TrustedBSD Project.
+ *
+ * Work sponsored by Defense Advanced Research Projects Agency under the
+ * CHATS research program, CBOSS project.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+/*
+ * Regression test to check some basic cases and see if access() and
+ * eaccess() are using the correct portions of the process credential.
+ * This test relies on running with privilege, and on UFS filesystem
+ * semantics. Running the test in other environments may result
+ * in incorrect failure identification.
+ *
+ * Note that this may also break if filesystem access control is
+ * broken, or if the ability to check and set credentials is broken.
+ *
+ * Note that this test uses two hard-coded non-root UIDs; on multi-user
+ * systems, these UIDs may be in use by an untrusted user, in which
+ * case those users could interfere with the test.
+ */
+
+#define ROOT_UID (uid_t)0
+#define WHEEL_GID (gid_t)0
+#define TEST_UID_ONE (uid_t)500
+#define TEST_GID_ONE (gid_t)500
+#define TEST_UID_TWO (uid_t)501
+#define TEST_GID_TWO (gid_t)501
+
+struct file_description {
+ char *fd_name;
+ uid_t fd_owner;
+ gid_t fd_group;
+ mode_t fd_mode;
+};
+
+static struct file_description fd_list[] = {
+{"test1", ROOT_UID, WHEEL_GID, 0400},
+{"test2", TEST_UID_ONE, WHEEL_GID,0400},
+{"test3", TEST_UID_TWO, WHEEL_GID, 0400},
+{"test4", ROOT_UID, WHEEL_GID, 0040},
+{"test5", ROOT_UID, TEST_GID_ONE, 0040},
+{"test6", ROOT_UID, TEST_GID_TWO, 0040}};
+
+static int fd_list_count = sizeof(fd_list) /
+ sizeof(struct file_description);
+
+int
+setup(void)
+{
+ int i, error;
+
+ for (i = 0; i < fd_list_count; i++) {
+ error = open(fd_list[i].fd_name, O_CREAT | O_EXCL, fd_list[i].fd_mode);
+ if (error == -1) {
+ perror("open");
+ return (error);
+ }
+ close(error);
+ error = chown(fd_list[i].fd_name, fd_list[i].fd_owner,
+ fd_list[i].fd_group);
+ if (error) {
+ perror("chown");
+ return (error);
+ }
+ }
+ return (0);
+}
+
+int
+restoreprivilege(void)
+{
+ int error;
+
+ error = setreuid(ROOT_UID, ROOT_UID);
+ if (error)
+ return (error);
+
+ error = setregid(WHEEL_GID, WHEEL_GID);
+ if (error)
+ return (error);
+
+ return (0);
+}
+
+int
+reportprivilege(char *message)
+{
+ uid_t euid, ruid, suid;
+ gid_t egid, rgid, sgid;
+ int error;
+
+ error = getresuid(&ruid, &euid, &suid);
+ if (error) {
+ perror("getresuid");
+ return (error);
+ }
+
+ error = getresgid(&rgid, &egid, &sgid);
+ if (error) {
+ perror("getresgid");
+ return (error);
+ }
+
+ if (message)
+ printf("%s: ", message);
+ printf("ruid: %d, euid: %d, suid: %d, ", ruid, euid, suid);
+ printf("rgid: %d, egid: %d, sgid: %d\n", rgid, egid, sgid);
+
+ return (0);
+}
+
+int
+cleanup(void)
+{
+ int i, error;
+
+ error = restoreprivilege();
+ if (error) {
+ perror("restoreprivilege");
+ return (error);
+ }
+
+ for (i = 0; i < fd_list_count; i++) {
+ error = unlink(fd_list[i].fd_name);
+ if (error)
+ return (error);
+ }
+
+ return (0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int error, errorseen;
+
+ if (geteuid() != 0) {
+ fprintf(stderr, "testaccess must run as root.\n");
+ exit (EXIT_FAILURE);
+ }
+
+ error = setup();
+ if (error) {
+ cleanup();
+ exit (EXIT_FAILURE);
+ }
+
+ /* Make sure saved uid is set appropriately. */
+ error = setresuid(ROOT_UID, ROOT_UID, ROOT_UID);
+ if (error) {
+ perror("setresuid");
+ cleanup();
+ }
+
+ /* Clear out additional groups. */
+ error = setgroups(0, NULL);
+ if (error) {
+ perror("setgroups");
+ cleanup();
+ }
+
+ /* Make sure saved gid is set appropriately. */
+ error = setresgid(WHEEL_GID, WHEEL_GID, WHEEL_GID);
+ if (error) {
+ perror("setresgid");
+ cleanup();
+ }
+
+ /*
+ * UID-only tests.
+ */
+
+ /* Check that saved uid is not used */
+ error = setresuid(TEST_UID_ONE, TEST_UID_ONE, ROOT_UID);
+ if (error) {
+ perror("setresuid.1");
+ cleanup();
+ exit (EXIT_FAILURE);
+ }
+
+ errorseen = 0;
+
+ error = access("test1", R_OK);
+ if (!error) {
+ fprintf(stderr, "saved uid used instead of real uid\n");
+ errorseen++;
+ }
+
+#ifdef EACCESS_AVAILABLE
+ error = eaccess("test1", R_OK);
+ if (!error) {
+ fprintf(stderr, "saved uid used instead of effective uid\n");
+ errorseen++;
+ }
+#endif
+
+ error = restoreprivilege();
+ if (error) {
+ perror("restoreprivilege");
+ cleanup();
+ exit (EXIT_FAILURE);
+ }
+
+ error = setresuid(TEST_UID_ONE, TEST_UID_TWO, ROOT_UID);
+ if (error) {
+ perror("setresid.2");
+ cleanup();
+ exit (EXIT_FAILURE);
+ }
+
+ /* Check that the real uid is used, not the effective uid */
+ error = access("test2", R_OK);
+ if (error) {
+ fprintf(stderr, "Effective uid was used instead of real uid in access().\n");
+ errorseen++;
+ }
+
+#ifdef EACCESS_AVAILABLE
+ /* Check that the effective uid is used, not the real uid */
+ error = eaccess("test3", R_OK);
+ if (error) {
+ fprintf(stderr, "Real uid was used instead of effective uid in eaccess().\n");
+ errorseen++;
+ }
+#endif
+
+ /* Check that the real uid is used, not the effective uid */
+ error = access("test3", R_OK);
+ if (!error) {
+ fprintf(stderr, "Effective uid was used instead of real uid in access().\n");
+ errorseen++;
+ }
+
+#ifdef EACCESS_AVAILABLE
+ /* Check that the effective uid is used, not the real uid */
+ error = eaccess("test2", R_OK);
+ if (!error) {
+ fprintf(stderr, "Real uid was used instead of effective uid in eaccess().\n");
+ errorseen++;
+ }
+#endif
+
+ error = restoreprivilege();
+ if (error) {
+ perror("restoreprivilege");
+ cleanup();
+ exit (EXIT_FAILURE);
+ }
+
+ error = setresgid(TEST_GID_ONE, TEST_GID_TWO, WHEEL_GID);
+ if (error) {
+ perror("setresgid.1");
+ cleanup();
+ exit (EXIT_FAILURE);
+ }
+
+ /* Set non-root effective uid to avoid excess privilege. */
+ error = setresuid(TEST_UID_ONE, TEST_UID_ONE, ROOT_UID);
+ if (error) {
+ perror("setresuid.3");
+ cleanup();
+ exit (EXIT_FAILURE);
+ }
+
+ /* Check that the saved gid is not used */
+ error = access("test4", R_OK);
+ if (!error) {
+ fprintf(stderr, "saved gid used instead of real gid\n");
+ }
+
+#ifdef EACCESS_AVAILABLE
+ error = eaccess("test4", R_OK);
+ if (!error) {
+ fprintf(stderr, "saved gid used instead of effective gid\n");
+ errorseen++;
+ }
+#endif
+
+ /* Check that the real gid is used, not the effective gid */
+ error = access("test5", R_OK);
+ if (error) {
+ fprintf(stderr, "Effective gid was used instead of real gid in access().\n");
+ errorseen++;
+ }
+
+#ifdef EACCESS_AVAILABLE
+ /* Check that the effective gid is used, not the real gid */
+ error = eaccess("test6", R_OK);
+ if (error) {
+ fprintf(stderr, "Real gid was used instead of effective gid in eaccess().\n");
+ errorseen++;
+ }
+#endif
+
+ /* Check that the real gid is used, not the effective gid */
+ error = access("test6", R_OK);
+ if (!error) {
+ fprintf(stderr, "Effective gid was used instead of real gid in access().\n");
+ errorseen++;
+ }
+
+#ifdef EACCESS_AVAILABLE
+ /* Check that the effective gid is used, not the real gid */
+ error = eaccess("test5", R_OK);
+ if (!error) {
+ fprintf(stderr, "Real gid was used instead of effective gid in eaccess().\n");
+ errorseen++;
+ }
+#endif
+
+ fprintf(stderr, "%d errors seen.\n", errorseen);
+
+ /*
+ * All tests done, restore and clean up
+ */
+
+ error = cleanup();
+ if (error) {
+ perror("cleanup");
+ exit (EXIT_FAILURE);
+ }
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/tools/regression/security/proc_to_proc/Makefile b/tools/regression/security/proc_to_proc/Makefile
new file mode 100644
index 0000000..ad09f7a6
--- /dev/null
+++ b/tools/regression/security/proc_to_proc/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+PROG= testuid
+NO_MAN=
+
+ADDITIONAL_FLAGS=-DSETSUGID_SUPPORTED
+#ADDITIONAL_FLAGS= -DSETSUGID_SUPPORTED_BUT_NO_LIBC_STUB
+ADDITIONAL_FLAGS+= -DCHECK_CRED_SET
+CFLAGS+= ${ADDITIONAL_FLAGS}
+SRCS= testuid.c scenario.c
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/security/proc_to_proc/README b/tools/regression/security/proc_to_proc/README
new file mode 100644
index 0000000..01857b8
--- /dev/null
+++ b/tools/regression/security/proc_to_proc/README
@@ -0,0 +1,54 @@
+$FreeBSD$
+
+ Inter-Process Authorization Test Suite
+ Robert Watson, TrustedBSD Project
+
+This test suite attempts to determine the behavior of inter-process
+authorization policy present in the kernel. It analyzes a series of
+important scenarios using specifically crafted process credentials
+and a set of operations. It then reports on any divergence from the
+expected results.
+
+Test operations:
+
+ptrace cred1 attempts ptrace attach to cred2
+sighup cred1 attempts SIGHUP of cred2
+sigsegv cred1 attempts SIGSEGV of cred2
+see cred1 attempts getpriority() on cred2
+sched cred1 attempts setpriority() on cred2
+
+Test scenarioes:
+
+priv on priv root process on another root process
+priv on unpriv1 root process on a non-root process
+unpriv1 on priv non-root process on a root process
+unpriv1 on unpriv1 non-root process on a similar non-root process
+unpriv1 on unpriv2 non-root process on a different non-root process
+unpriv1 on daemon1 non-root process on a root daemon process acting with
+ same non-root effective credentials
+unpriv1 on daemon2 non-root process on a root daemon process acting with
+ different non-root effective credentials
+unpriv1 on setuid1 non-root process on a setuid-root process with same
+ non-root real credentials
+unpriv1 on setuid2 non-root process on a setuid-root process with
+ different non-root real credentials
+
+The credential elements supported by the test suite are:
+
+ effective uid
+ real uid
+ saved uid
+ P_SUGID flag
+
+Other untested aspects of interest include groups, as well as session
+relationship. Other test operations that might be of interest are SIGCONT,
+and SIGIO.
+
+The current set of tests includes some tests where normally the P_SUGID
+flag is set, but isn't in the test. The result is that some tests fail
+that may not reflect real-world software configurations. However, they
+do point to possible changes that could be made in the authorization system
+to improve resilience to failure or violation of invariants.
+
+These tests rely on __setugid(), a system call enabled using options
+REGRESSION.
diff --git a/tools/regression/security/proc_to_proc/scenario.c b/tools/regression/security/proc_to_proc/scenario.c
new file mode 100644
index 0000000..0e3e476
--- /dev/null
+++ b/tools/regression/security/proc_to_proc/scenario.c
@@ -0,0 +1,433 @@
+/*-
+ * Copyright (c) 2001 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/uio.h>
+#include <sys/ptrace.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <sys/ktrace.h>
+
+#include <assert.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Relevant parts of a process credential.
+ */
+struct cred {
+ uid_t cr_euid, cr_ruid, cr_svuid;
+ int cr_issetugid;
+};
+
+/*
+ * Description of a scenario.
+ */
+struct scenario {
+ struct cred *sc_cred1, *sc_cred2; /* credentials of p1 and p2 */
+ int sc_canptrace_errno; /* desired ptrace failure */
+ int sc_canktrace_errno; /* desired ktrace failure */
+ int sc_cansighup_errno; /* desired SIGHUP failure */
+ int sc_cansigsegv_errno; /* desired SIGSEGV failure */
+ int sc_cansee_errno; /* desired getprio failure */
+ int sc_cansched_errno; /* desired setprio failure */
+ char *sc_name; /* test name */
+};
+
+/*
+ * Table of relevant credential combinations.
+ */
+static struct cred creds[] = {
+/* euid ruid svuid issetugid */
+/* 0 */ { 0, 0, 0, 0 }, /* privileged */
+/* 1 */ { 0, 0, 0, 1 }, /* privileged + issetugid */
+/* 2 */ { 1000, 1000, 1000, 0 }, /* unprivileged1 */
+/* 3 */ { 1000, 1000, 1000, 1 }, /* unprivileged1 + issetugid */
+/* 4 */ { 1001, 1001, 1001, 0 }, /* unprivileged2 */
+/* 5 */ { 1001, 1001, 1001, 1 }, /* unprivileged2 + issetugid */
+/* 6 */ { 1000, 0, 0, 0 }, /* daemon1 */
+/* 7 */ { 1000, 0, 0, 1 }, /* daemon1 + issetugid */
+/* 8 */ { 1001, 0, 0, 0 }, /* daemon2 */
+/* 9 */ { 1001, 0, 0, 1 }, /* daemon2 + issetugid */
+/* 10 */{ 0, 1000, 1000, 0 }, /* setuid1 */
+/* 11 */{ 0, 1000, 1000, 1 }, /* setuid1 + issetugid */
+/* 12 */{ 0, 1001, 1001, 0 }, /* setuid2 */
+/* 13 */{ 0, 1001, 1001, 1 }, /* setuid2 + issetugid */
+};
+
+/*
+ * Table of scenarios.
+ */
+static const struct scenario scenarios[] = {
+/* cred1 cred2 ptrace ktrace, sighup sigsegv see sched name */
+/* privileged on privileged */
+{ &creds[0], &creds[0], 0, 0, 0, 0, 0, 0, "0. priv on priv"},
+{ &creds[0], &creds[1], 0, 0, 0, 0, 0, 0, "1. priv on priv"},
+{ &creds[1], &creds[0], 0, 0, 0, 0, 0, 0, "2. priv on priv"},
+{ &creds[1], &creds[1], 0, 0, 0, 0, 0, 0, "3. priv on priv"},
+/* privileged on unprivileged */
+{ &creds[0], &creds[2], 0, 0, 0, 0, 0, 0, "4. priv on unpriv1"},
+{ &creds[0], &creds[3], 0, 0, 0, 0, 0, 0, "5. priv on unpriv1"},
+{ &creds[1], &creds[2], 0, 0, 0, 0, 0, 0, "6. priv on unpriv1"},
+{ &creds[1], &creds[3], 0, 0, 0, 0, 0, 0, "7. priv on unpriv1"},
+/* unprivileged on privileged */
+{ &creds[2], &creds[0], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "8. unpriv1 on priv"},
+{ &creds[2], &creds[1], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "9. unpriv1 on priv"},
+{ &creds[3], &creds[0], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "10. unpriv1 on priv"},
+{ &creds[3], &creds[1], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "11. unpriv1 on priv"},
+/* unprivileged on same unprivileged */
+{ &creds[2], &creds[2], 0, 0, 0, 0, 0, 0, "12. unpriv1 on unpriv1"},
+{ &creds[2], &creds[3], EPERM, EPERM, 0, EPERM, 0, 0, "13. unpriv1 on unpriv1"},
+{ &creds[3], &creds[2], 0, 0, 0, 0, 0, 0, "14. unpriv1 on unpriv1"},
+{ &creds[3], &creds[3], EPERM, EPERM, 0, EPERM, 0, 0, "15. unpriv1 on unpriv1"},
+/* unprivileged on different unprivileged */
+{ &creds[2], &creds[4], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "16. unpriv1 on unpriv2"},
+{ &creds[2], &creds[5], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "17. unpriv1 on unpriv2"},
+{ &creds[3], &creds[4], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "18. unpriv1 on unpriv2"},
+{ &creds[3], &creds[5], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "19. unpriv1 on unpriv2"},
+/* unprivileged on daemon, same */
+{ &creds[2], &creds[6], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "20. unpriv1 on daemon1"},
+{ &creds[2], &creds[7], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "21. unpriv1 on daemon1"},
+{ &creds[3], &creds[6], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "22. unpriv1 on daemon1"},
+{ &creds[3], &creds[7], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "23. unpriv1 on daemon1"},
+/* unprivileged on daemon, different */
+{ &creds[2], &creds[8], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "24. unpriv1 on daemon2"},
+{ &creds[2], &creds[9], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "25. unpriv1 on daemon2"},
+{ &creds[3], &creds[8], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "26. unpriv1 on daemon2"},
+{ &creds[3], &creds[9], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "27. unpriv1 on daemon2"},
+/* unprivileged on setuid, same */
+{ &creds[2], &creds[10], EPERM, EPERM, 0, 0, 0, 0, "28. unpriv1 on setuid1"},
+{ &creds[2], &creds[11], EPERM, EPERM, 0, EPERM, 0, 0, "29. unpriv1 on setuid1"},
+{ &creds[3], &creds[10], EPERM, EPERM, 0, 0, 0, 0, "30. unpriv1 on setuid1"},
+{ &creds[3], &creds[11], EPERM, EPERM, 0, EPERM, 0, 0, "31. unpriv1 on setuid1"},
+/* unprivileged on setuid, different */
+{ &creds[2], &creds[12], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "32. unpriv1 on setuid2"},
+{ &creds[2], &creds[13], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "33. unpriv1 on setuid2"},
+{ &creds[3], &creds[12], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "34. unpriv1 on setuid2"},
+{ &creds[3], &creds[13], EPERM, EPERM, EPERM, EPERM, 0, EPERM, "35. unpriv1 on setuid2"},
+};
+int scenarios_count = sizeof(scenarios) / sizeof(struct scenario);
+
+/*
+ * Convert an error number to a compact string representation. For now,
+ * implement only the error numbers we are likely to see.
+ */
+static char *
+errno_to_string(int error)
+{
+
+ switch (error) {
+ case EPERM:
+ return ("EPERM");
+ case EACCES:
+ return ("EACCES");
+ case EINVAL:
+ return ("EINVAL");
+ case ENOSYS:
+ return ("ENOSYS");
+ case ESRCH:
+ return ("ESRCH");
+ case EOPNOTSUPP:
+ return ("EOPNOTSUPP");
+ case 0:
+ return ("0");
+ default:
+ printf("%d\n", error);
+ return ("unknown");
+ }
+}
+
+/*
+ * Return a process credential describing the current process.
+ */
+static int
+cred_get(struct cred *cred)
+{
+ int error;
+
+ error = getresuid(&cred->cr_ruid, &cred->cr_euid, &cred->cr_svuid);
+ if (error)
+ return (error);
+
+ cred->cr_issetugid = issetugid();
+
+ return (0);
+}
+
+/*
+ * Userland stub for __setsugid() to take into account possible presence
+ * in C library, kernel, et al.
+ */
+int
+setugid(int flag)
+{
+
+#ifdef SETSUGID_SUPPORTED
+ return (__setugid(flag));
+#else
+#ifdef SETSUGID_SUPPORTED_BUT_NO_LIBC_STUB
+ return (syscall(374, flag));
+#else
+ return (ENOSYS);
+#endif
+#endif
+}
+
+/*
+ * Set the current process's credentials to match the passed credential.
+ */
+static int
+cred_set(struct cred *cred)
+{
+ int error;
+
+ error = setresuid(cred->cr_ruid, cred->cr_euid, cred->cr_svuid);
+ if (error)
+ return (error);
+
+ error = setugid(cred->cr_issetugid);
+ if (error) {
+ perror("__setugid");
+ return (error);
+ }
+
+#ifdef CHECK_CRED_SET
+ {
+ uid_t ruid, euid, svuid;
+ error = getresuid(&ruid, &euid, &svuid);
+ if (error) {
+ perror("getresuid");
+ return (-1);
+ }
+ assert(ruid == cred->cr_ruid);
+ assert(euid == cred->cr_euid);
+ assert(svuid == cred->cr_svuid);
+ assert(cred->cr_issetugid == issetugid());
+ }
+#endif /* !CHECK_CRED_SET */
+
+ return (0);
+}
+
+/*
+ * Print the passed process credential to the passed I/O stream.
+ */
+static void
+cred_print(FILE *output, struct cred *cred)
+{
+
+ fprintf(output, "(e:%d r:%d s:%d P_SUGID:%d)", cred->cr_euid,
+ cred->cr_ruid, cred->cr_svuid, cred->cr_issetugid);
+}
+
+#define LOOP_PTRACE 0
+#define LOOP_KTRACE 1
+#define LOOP_SIGHUP 2
+#define LOOP_SIGSEGV 3
+#define LOOP_SEE 4
+#define LOOP_SCHED 5
+#define LOOP_MAX LOOP_SCHED
+
+/*
+ * Enact a scenario by looping through the four test cases for the scenario,
+ * spawning off pairs of processes with the desired credentials, and
+ * reporting results to stdout.
+ */
+static int
+enact_scenario(int scenario)
+{
+ pid_t pid1, pid2;
+ char *name, *tracefile;
+ int error, desirederror, loop;
+
+ for (loop = 0; loop < LOOP_MAX+1; loop++) {
+ /*
+ * Spawn the first child, target of the operation.
+ */
+ pid1 = fork();
+ switch (pid1) {
+ case -1:
+ return (-1);
+ case 0:
+ /* child */
+ error = cred_set(scenarios[scenario].sc_cred2);
+ if (error) {
+ perror("cred_set");
+ return (error);
+ }
+ /* 200 seconds should be plenty of time. */
+ sleep(200);
+ exit(0);
+ default:
+ /* parent */
+ break;
+ }
+
+ /*
+ * XXX
+ * This really isn't ideal -- give proc 1 a chance to set
+ * its credentials, or we may get spurious errors. Really,
+ * some for of IPC should be used to allow the parent to
+ * wait for the first child to be ready before spawning
+ * the second child.
+ */
+ sleep(1);
+
+ /*
+ * Spawn the second child, source of the operation.
+ */
+ pid2 = fork();
+ switch (pid2) {
+ case -1:
+ return (-1);
+
+ case 0:
+ /* child */
+ error = cred_set(scenarios[scenario].sc_cred1);
+ if (error) {
+ perror("cred_set");
+ return (error);
+ }
+
+ /*
+ * Initialize errno to zero so as to catch any
+ * generated errors. In each case, perform the
+ * operation. Preserve the error number for later
+ * use so it doesn't get stomped on by any I/O.
+ * Determine the desired error for the given case
+ * by extracting it from the scenario table.
+ * Initialize a function name string for output
+ * prettiness.
+ */
+ errno = 0;
+ switch (loop) {
+ case LOOP_PTRACE:
+ error = ptrace(PT_ATTACH, pid1, NULL, 0);
+ error = errno;
+ name = "ptrace";
+ desirederror =
+ scenarios[scenario].sc_canptrace_errno;
+ break;
+ case LOOP_KTRACE:
+ tracefile = mktemp("/tmp/testuid_ktrace.XXXXXX");
+ if (tracefile == NULL) {
+ error = errno;
+ perror("mktemp");
+ break;
+ }
+ error = ktrace(tracefile, KTROP_SET,
+ KTRFAC_SYSCALL, pid1);
+ error = errno;
+ name = "ktrace";
+ desirederror =
+ scenarios[scenario].sc_canktrace_errno;
+ unlink(tracefile);
+ break;
+ case LOOP_SIGHUP:
+ error = kill(pid1, SIGHUP);
+ error = errno;
+ name = "sighup";
+ desirederror =
+ scenarios[scenario].sc_cansighup_errno;
+ break;
+ case LOOP_SIGSEGV:
+ error = kill(pid1, SIGSEGV);
+ error = errno;
+ name = "sigsegv";
+ desirederror =
+ scenarios[scenario].sc_cansigsegv_errno;
+ break;
+ case LOOP_SEE:
+ getpriority(PRIO_PROCESS, pid1);
+ error = errno;
+ name = "see";
+ desirederror =
+ scenarios[scenario].sc_cansee_errno;
+ break;
+ case LOOP_SCHED:
+ error = setpriority(PRIO_PROCESS, pid1,
+ 0);
+ error = errno;
+ name = "sched";
+ desirederror =
+ scenarios[scenario].sc_cansched_errno;
+ break;
+ default:
+ name = "broken";
+ }
+
+ if (error != desirederror) {
+ fprintf(stdout,
+ "[%s].%s: expected %s, got %s\n ",
+ scenarios[scenario].sc_name, name,
+ errno_to_string(desirederror),
+ errno_to_string(error));
+ cred_print(stdout,
+ scenarios[scenario].sc_cred1);
+ cred_print(stdout,
+ scenarios[scenario].sc_cred2);
+ fprintf(stdout, "\n");
+ }
+
+ exit(0);
+
+ default:
+ /* parent */
+ break;
+ }
+
+ error = waitpid(pid2, NULL, 0);
+ /*
+ * Once pid2 has died, it's safe to kill pid1, if it's still
+ * alive. Mask signal failure in case the test actually
+ * killed pid1 (not unlikely: can occur in both signal and
+ * ptrace cases).
+ */
+ kill(pid1, SIGKILL);
+ error = waitpid(pid2, NULL, 0);
+ }
+
+ return (0);
+}
+
+void
+enact_scenarios(void)
+{
+ int i, error;
+
+ for (i = 0; i < scenarios_count; i++) {
+ error = enact_scenario(i);
+ if (error)
+ perror("enact_scenario");
+ }
+}
diff --git a/tools/regression/security/proc_to_proc/scenario.h b/tools/regression/security/proc_to_proc/scenario.h
new file mode 100644
index 0000000..da08720
--- /dev/null
+++ b/tools/regression/security/proc_to_proc/scenario.h
@@ -0,0 +1,34 @@
+/*-
+ * Copyright (c) 2001 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+#ifndef _SCENARIO_H
+#define _SCENARIO_H
+
+int setugid __P((int flag));
+int enact_scenarios __P((void));
+
+#endif /* !_SCENARIO_H */
diff --git a/tools/regression/security/proc_to_proc/testuid.c b/tools/regression/security/proc_to_proc/testuid.c
new file mode 100644
index 0000000..a9b81a08
--- /dev/null
+++ b/tools/regression/security/proc_to_proc/testuid.c
@@ -0,0 +1,65 @@
+/*-
+ * Copyright (c) 2001 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+
+#include <stdio.h>
+#include <unistd.h>
+
+#include "scenario.h"
+
+int
+main(int argc, char *argv[])
+{
+ int error;
+
+ fprintf(stderr, "test capabilities: ");
+#ifdef SETSUGID_SUPPORTED
+ fprintf(stderr, "[SETSUGID_SUPPORTED] ");
+#endif
+#ifdef SETSUGID_SUPPORTED_BUT_NO_LIBC_STUB
+ fprintf(stderr, "[SETSUGID_SUPPORTED_BUT_NO_LIBC_STUB] ");
+#endif
+#ifdef CHECK_CRED_SET
+ fprintf(stderr, "[CHECK_CRED_SET] ");
+#endif
+ fprintf(stderr, "\n");
+
+ error = setugid(1);
+ if (error) {
+ perror("setugid");
+ fprintf(stderr,
+ "This test suite requires options REGRESSION\n");
+ return (-1);
+ }
+
+ enact_scenarios();
+
+ return (0);
+}
+
diff --git a/tools/regression/sigqueue/Makefile b/tools/regression/sigqueue/Makefile
new file mode 100644
index 0000000..3533723
--- /dev/null
+++ b/tools/regression/sigqueue/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR=sigqtest1 sigqtest2
+
+.include <bsd.subdir.mk>
diff --git a/tools/regression/sigqueue/sigqtest1/Makefile b/tools/regression/sigqueue/sigqtest1/Makefile
new file mode 100644
index 0000000..08a140c
--- /dev/null
+++ b/tools/regression/sigqueue/sigqtest1/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG=sigqtest1
+LDADD+=
+NO_MAN=
+DEBUG_FLAGS=-g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sigqueue/sigqtest1/sigqtest1.c b/tools/regression/sigqueue/sigqtest1/sigqtest1.c
new file mode 100644
index 0000000..0f40021
--- /dev/null
+++ b/tools/regression/sigqueue/sigqtest1/sigqtest1.c
@@ -0,0 +1,49 @@
+/* $FreeBSD$ */
+#include <signal.h>
+#include <stdio.h>
+#include <err.h>
+#include <errno.h>
+
+int received;
+
+void handler(int sig, siginfo_t *si, void *ctx)
+{
+ if (si->si_code != SI_QUEUE)
+ errx(1, "si_code != SI_QUEUE");
+ if (si->si_value.sival_int != received)
+ errx(1, "signal is out of order");
+ received++;
+}
+
+int main()
+{
+ struct sigaction sa;
+ union sigval val;
+ int ret;
+ int i;
+ sigset_t set;
+
+ sa.sa_flags = SA_SIGINFO;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_sigaction = handler;
+ sigaction(SIGRTMIN, &sa, NULL);
+ sigemptyset(&set);
+ sigaddset(&set, SIGRTMIN);
+ sigprocmask(SIG_BLOCK, &set, NULL);
+ i = 0;
+ for (;;) {
+ val.sival_int = i;
+ ret = sigqueue(getpid(), SIGRTMIN, val);
+ if (ret == -1) {
+ if (errno != EAGAIN) {
+ errx(1, "errno != EAGAIN");
+ }
+ break;
+ }
+ i++;
+ }
+ sigprocmask(SIG_UNBLOCK, &set, NULL);
+ if (received != i)
+ errx(1, "error, signal lost");
+ printf("OK\n");
+}
diff --git a/tools/regression/sigqueue/sigqtest2/Makefile b/tools/regression/sigqueue/sigqtest2/Makefile
new file mode 100644
index 0000000..b3899ad
--- /dev/null
+++ b/tools/regression/sigqueue/sigqtest2/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG=sigqtest2
+LDADD+=
+NO_MAN=
+DEBUG_FLAGS=-g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sigqueue/sigqtest2/sigqtest2.c b/tools/regression/sigqueue/sigqtest2/sigqtest2.c
new file mode 100644
index 0000000..078ea81
--- /dev/null
+++ b/tools/regression/sigqueue/sigqtest2/sigqtest2.c
@@ -0,0 +1,91 @@
+/* $FreeBSD$ */
+#include <signal.h>
+#include <stdio.h>
+#include <err.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+int stop_received;
+int exit_received;
+int cont_received;
+
+void job_handler(int sig, siginfo_t *si, void *ctx)
+{
+ int status;
+ int ret;
+
+ if (si->si_code == CLD_STOPPED) {
+ stop_received = 1;
+ kill(si->si_pid, SIGCONT);
+ } else if (si->si_code == CLD_EXITED) {
+ ret = waitpid(si->si_pid, &status, 0);
+ if (ret == -1)
+ errx(1, "waitpid");
+ if (!WIFEXITED(status))
+ errx(1, "!WIFEXITED(status)");
+ exit_received = 1;
+ } else if (si->si_code == CLD_CONTINUED) {
+ cont_received = 1;
+ }
+}
+
+void job_control_test()
+{
+ struct sigaction sa;
+ pid_t pid;
+ int count = 10;
+
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = SA_SIGINFO;
+ sa.sa_sigaction = job_handler;
+ sigaction(SIGCHLD, &sa, NULL);
+ stop_received = 0;
+ cont_received = 0;
+ exit_received = 0;
+ pid = fork();
+ if (pid == 0) {
+ kill(getpid(), SIGSTOP);
+ exit(1);
+ }
+
+ while (!(cont_received && stop_received && exit_received)) {
+ sleep(1);
+ if (--count == 0)
+ break;
+ }
+ if (!(cont_received && stop_received && exit_received))
+ errx(1, "job signals lost");
+
+ printf("job control test OK.\n");
+}
+
+void rtsig_handler(int sig, siginfo_t *si, void *ctx)
+{
+}
+
+int main()
+{
+ struct sigaction sa;
+ sigset_t set;
+ union sigval val;
+
+ /* test job control with empty signal queue */
+ job_control_test();
+
+ /* now full fill signal queue in kernel */
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = SA_SIGINFO;
+ sa.sa_sigaction = rtsig_handler;
+ sigaction(SIGRTMIN, &sa, NULL);
+ sigemptyset(&set);
+ sigaddset(&set, SIGRTMIN);
+ sigprocmask(SIG_BLOCK, &set, NULL);
+ val.sival_int = 1;
+ while (sigqueue(getpid(), SIGRTMIN, val))
+ ;
+
+ /* signal queue is fully filled, test the job control again. */
+ job_control_test();
+ return (0);
+}
diff --git a/tools/regression/sockets/accept_fd_leak/Makefile b/tools/regression/sockets/accept_fd_leak/Makefile
new file mode 100644
index 0000000..efcaa16
--- /dev/null
+++ b/tools/regression/sockets/accept_fd_leak/Makefile
@@ -0,0 +1,11 @@
+#
+# $FreeBSD$
+#
+
+PROG= accept_fd_leak
+NO_MAN=
+
+regress:
+ ./accept_fd_leak
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/accept_fd_leak/accept_fd_leak.c b/tools/regression/sockets/accept_fd_leak/accept_fd_leak.c
new file mode 100644
index 0000000..32d4edf
--- /dev/null
+++ b/tools/regression/sockets/accept_fd_leak/accept_fd_leak.c
@@ -0,0 +1,197 @@
+/*-
+ * Copyright (c) 2004 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/wait.h>
+
+#include <netinet/in.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define LOOPS 500
+
+volatile int quit;
+
+static void
+child_died(int sig)
+{
+ quit = 1;
+}
+
+/*
+ * This test is intended to detect a leak of a file descriptor in the process
+ * following a failed non-blocking accept. It measures an available fd
+ * baseline, then performs 1000 failing accepts, then checks to see what the
+ * next fd is. It relies on sequential fd allocation, and will test for it
+ * briefly before beginning (not 100% reliable, but a good start).
+ */
+int
+main(int argc, char *argv[])
+{
+ struct sockaddr_in sin;
+ socklen_t size;
+ pid_t child;
+ int fd1, fd2, fd3, i, s;
+ int status;
+
+ printf("1..2\n");
+
+ /*
+ * Check for sequential fd allocation, and give up early if not.
+ */
+ fd1 = dup(STDIN_FILENO);
+ fd2 = dup(STDIN_FILENO);
+ if (fd2 != fd1 + 1)
+ errx(-1, "Non-sequential fd allocation\n");
+
+ s = socket(PF_INET, SOCK_STREAM, 0);
+ if (s == -1)
+ errx(-1, "socket: %s", strerror(errno));
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(8080);
+
+ if (bind(s, (struct sockaddr *) &sin, sizeof(sin)) != 0)
+ errx(-1, "bind: %s", strerror(errno));
+
+ if (listen(s, -1) != 0)
+ errx(-1, "listen: %s", strerror(errno));
+
+ i = fcntl(s, F_GETFL);
+ if (i == -1)
+ errx(-1, "ioctl(F_GETFL): %s", strerror(errno));
+ i |= O_NONBLOCK;
+ if (fcntl(s, F_SETFL, i) != 0)
+ errx(-1, "ioctl(F_SETFL): %s", strerror(errno));
+ i = fcntl(s, F_GETFL);
+ if (i == -1)
+ errx(-1, "ioctl(F_GETFL): %s", strerror(errno));
+ if ((i & O_NONBLOCK) != O_NONBLOCK)
+ errx(-1, "Failed to set O_NONBLOCK (i=0x%x)\n", i);
+
+ for (i = 0; i < LOOPS; i++) {
+ size = sizeof(sin);
+ if (accept(s, (struct sockaddr *)&sin, &size) != -1)
+ errx(-1, "accept succeeded\n");
+ if (errno != EAGAIN)
+ errx(-1, "accept: %s", strerror(errno));
+ }
+
+ /*
+ * Allocate a file descriptor and make sure it's fd2+2. 2 because
+ * we allocate an fd for the socket.
+ */
+ fd3 = dup(STDIN_FILENO);
+ if (fd3 != fd2 + 2)
+ printf("not ok 1 - (%d, %d, %d)\n", fd1, fd2, fd3);
+ else
+ printf("ok 1\n");
+
+ /*
+ * Try failing accept's w/o non-blocking where the destination
+ * address pointer is invalid.
+ */
+ close(fd3);
+ signal(SIGCHLD, child_died);
+ child = fork();
+ if (child < 0)
+ errx(-1, "fork: %s", strerror(errno));
+
+ /*
+ * Child process does 1000 connect's.
+ */
+ if (child == 0) {
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(8080);
+
+ for (i = 0; i < 1000; i++) {
+ s = socket(PF_INET, SOCK_STREAM, 0);
+ if (s == -1)
+ errx(-1, "socket: %s", strerror(errno));
+ if (connect(s, (struct sockaddr *)&sin,
+ sizeof(sin)) < 0)
+ errx(-1, "connect: %s", strerror(errno));
+ close(s);
+ }
+ exit(0);
+ }
+
+ /* Reset back to a blocking socket. */
+ i = fcntl(s, F_GETFL);
+ if (i == -1)
+ errx(-1, "ioctl(F_GETFL): %s", strerror(errno));
+ i &= ~O_NONBLOCK;
+ if (fcntl(s, F_SETFL, i) != 0)
+ errx(-1, "ioctl(F_SETFL): %s", strerror(errno));
+ i = fcntl(s, F_GETFL);
+ if (i == -1)
+ errx(-1, "ioctl(F_GETFL): %s", strerror(errno));
+ if (i & O_NONBLOCK)
+ errx(-1, "Failed to clear O_NONBLOCK (i=0x%x)\n", i);
+
+ /* Do 1000 accept's with an invalid pointer. */
+ for (i = 0; !quit && i < 1000; i++) {
+ size = sizeof(sin);
+ if (accept(s, (struct sockaddr *)(uintptr_t)(0x100),
+ &size) != -1)
+ errx(-1, "accept succeeded\n");
+ if (errno != EFAULT)
+ errx(-1, "accept: %s", strerror(errno));
+ }
+
+ if (waitpid(child, &status, 0) < 0)
+ errx(-1, "waitpid: %s", strerror(errno));
+ if (!WIFEXITED(status) || WEXITSTATUS(status) != 0)
+ warnx("child process died");
+
+ /*
+ * Allocate a file descriptor and make sure it's fd2+2. 2 because
+ * we allocate an fd for the socket.
+ */
+ fd3 = dup(STDIN_FILENO);
+ if (fd3 != fd2 + 2)
+ printf("not ok 2 - (%d, %d, %d)\n", fd1, fd2, fd3);
+ else
+ printf("ok 2\n");
+
+ return (0);
+}
diff --git a/tools/regression/sockets/accept_fd_leak/accept_fd_leak.t b/tools/regression/sockets/accept_fd_leak/accept_fd_leak.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/sockets/accept_fd_leak/accept_fd_leak.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/sockets/accf_data_attach/Makefile b/tools/regression/sockets/accf_data_attach/Makefile
new file mode 100644
index 0000000..736c796
--- /dev/null
+++ b/tools/regression/sockets/accf_data_attach/Makefile
@@ -0,0 +1,11 @@
+#
+# $FreeBSD$
+#
+
+PROG= accf_data_attach
+NO_MAN=
+
+accf_data_attach: accf_data_attach.c
+ gcc -Wall -o accf_data_attach accf_data_attach.c
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/accf_data_attach/accf_data_attach.c b/tools/regression/sockets/accf_data_attach/accf_data_attach.c
new file mode 100644
index 0000000..697d83a
--- /dev/null
+++ b/tools/regression/sockets/accf_data_attach/accf_data_attach.c
@@ -0,0 +1,219 @@
+/*-
+ * Copyright (c) 2004 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define ACCF_NAME "dataready"
+
+/*
+ * A number of small tests to confirm that attaching ACCF_DATA accept filters
+ * to inet4 ports works as expected. We test:
+ *
+ * - That no accept filter is attached on a newly created socket.
+ * - That bind() has no affect on the accept filter state.
+ * - That we can't attach an accept filter to a socket that isn't in the
+ * listen state.
+ * - That after we fail to attach the filter, querying the kernel shows no
+ * filter attached.
+ * - That we can attach an accept filter to a socket that is in the listen
+ * state.
+ * - That once an accept filter is attached, we can query to make sure it is
+ * attached.
+ * - That once an accept filter is attached, we can remove it and query to
+ * make sure it is removed.
+ */
+int
+main(int argc, char *argv[])
+{
+ struct accept_filter_arg afa;
+ struct sockaddr_in sin;
+ socklen_t len;
+ int lso, ret;
+
+ printf("1..11\n");
+
+ /*
+ * Step 0. Open socket().
+ */
+ lso = socket(PF_INET, SOCK_STREAM, 0);
+ if (lso == -1)
+ errx(-1, "not ok 1 - socket: %s", strerror(errno));
+ printf("ok 1 - socket\n");
+
+ /*
+ * Step 1. After socket(). Should return EINVAL, since no accept
+ * filter should be attached.
+ */
+ bzero(&afa, sizeof(afa));
+ len = sizeof(afa);
+ ret = getsockopt(lso, SOL_SOCKET, SO_ACCEPTFILTER, &afa, &len);
+ if (ret != -1)
+ errx(-1, "not ok 2 - getsockopt() after socket() succeeded");
+ if (errno != EINVAL)
+ errx(-1, "not ok 2 - getsockopt() after socket() failed with "
+ "%d (%s)", errno, strerror(errno));
+ printf("ok 2 - getsockopt\n");
+
+ /*
+ * Step 2. Bind(). Ideally this will succeed.
+ */
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_port = htons(8080);
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ if (bind(lso, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ errx(-1, "not ok 3 - bind %s", strerror(errno));
+ printf("ok 3 - bind\n");
+
+ /*
+ * Step 3: After bind(). getsockopt() should return EINVAL, since no
+ * accept filter should be attached.
+ */
+ len = sizeof(afa);
+ ret = getsockopt(lso, SOL_SOCKET, SO_ACCEPTFILTER, &afa, &len);
+ if (ret != -1)
+ errx(-1, "not ok 4 - getsockopt() after bind() succeeded");
+ if (errno != EINVAL)
+ errx(-1, "not ok 4 - getsockopt() after bind() failed with %d (%s)",
+ errno, strerror(errno));
+ printf("ok 4 - getsockopt\n");
+
+ /*
+ * Step 4: Setsockopt() before listen(). Should fail, since it's not
+ * yet a listen() socket.
+ */
+ bzero(&afa, sizeof(afa));
+ strcpy(afa.af_name, ACCF_NAME);
+ ret = setsockopt(lso, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
+ if (ret == 0)
+ errx(-1, "not ok 5 - setsockopt() before listen() succeeded");
+ printf("ok 5 - setsockopt\n");
+
+ /*
+ * Step 5: Getsockopt() after pre-listen() setsockopt(). Should
+ * fail with EINVAL, since setsockopt() should have failed.
+ */
+ len = sizeof(afa);
+ ret = getsockopt(lso, SOL_SOCKET, SO_ACCEPTFILTER, &afa, &len);
+ if (ret == 0)
+ errx(-1, "not ok 6 - getsockopt() after pre-listen() setsockopt() "
+ "succeeded");
+ if (errno != EINVAL)
+ errx(-1, "not ok 6 - pre-listen() getsockopt() failed with %d (%s)",
+ errno, strerror(errno));
+ printf("ok 6 - getsockopt\n");
+
+ /*
+ * Step 6: listen().
+ */
+ if (listen(lso, -1) < 0)
+ errx(-1, "not ok 7 - listen: %s", strerror(errno));
+ printf("ok 7 - listen\n");
+
+ /*
+ * Step 7: Getsockopt() after listen(). Should fail with EINVAL,
+ * since we have not installed accept filter yet.
+ */
+ len = sizeof(afa);
+ ret = getsockopt(lso, SOL_SOCKET, SO_ACCEPTFILTER, &afa, &len);
+ if (ret == 0)
+ errx(-1, "not ok 8 - getsockopt() after listen() but before "
+ "setsockopt() succeeded");
+ if (errno != EINVAL)
+ errx(-1, "not ok 8 - getsockopt() after listen() but before "
+ "setsockopt() failed with %d (%s)", errno, strerror(errno));
+ printf("ok 8 - getsockopt\n");
+
+ /*
+ * Step 8: After listen(). This call to setsockopt() should succeed.
+ */
+ bzero(&afa, sizeof(afa));
+ strcpy(afa.af_name, ACCF_NAME);
+ ret = setsockopt(lso, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
+ if (ret != 0)
+ errx(-1, "not ok 9 - setsockopt() after listen() failed with %d "
+ "(%s)", errno, strerror(errno));
+ if (len != sizeof(afa))
+ errx(-1, "not ok 9 - setsockopt() after listen() returned wrong "
+ "size (%d vs expected %d)", len, sizeof(afa));
+ printf("ok 9 - setsockopt\n");
+
+ /*
+ * Step 9: After setsockopt(). Should succeed and identify
+ * ACCF_NAME.
+ */
+ bzero(&afa, sizeof(afa));
+ len = sizeof(afa);
+ ret = getsockopt(lso, SOL_SOCKET, SO_ACCEPTFILTER, &afa, &len);
+ if (ret != 0)
+ errx(-1, "not ok 10 - getsockopt() after listen() setsockopt() "
+ "failed with %d (%s)", errno, strerror(errno));
+ if (len != sizeof(afa))
+ errx(-1, "not ok 10 - getsockopt() after setsockopet() after "
+ "listen() returned wrong size (got %d expected %d)", len,
+ sizeof(afa));
+ if (strcmp(afa.af_name, ACCF_NAME) != 0)
+ errx(-1, "not ok 10 - getsockopt() after setsockopt() after "
+ "listen() mismatch (got %s expected %s)", afa.af_name,
+ ACCF_NAME);
+ printf("ok 10 - getsockopt\n");
+
+ /*
+ * Step 10: Remove accept filter. After removing the accept filter
+ * getsockopt() should fail with EINVAL.
+ */
+ ret = setsockopt(lso, SOL_SOCKET, SO_ACCEPTFILTER, NULL, 0);
+ if (ret != 0)
+ errx(-1, "not ok 11 - setsockopt() after listen() "
+ "failed with %d (%s)", errno, strerror(errno));
+ bzero(&afa, sizeof(afa));
+ len = sizeof(afa);
+ ret = getsockopt(lso, SOL_SOCKET, SO_ACCEPTFILTER, &afa, &len);
+ if (ret == 0)
+ errx(-1, "not ok 11 - getsockopt() after removing "
+ "the accept filter returns valid accept filter %s",
+ afa.af_name);
+ if (errno != EINVAL)
+ errx(-1, "not ok 11 - getsockopt() after removing the accept"
+ "filter failed with %d (%s)", errno, strerror(errno));
+ printf("ok 11 - setsockopt\n");
+
+ close(lso);
+ return (0);
+}
diff --git a/tools/regression/sockets/accf_data_attach/accf_data_attach.t b/tools/regression/sockets/accf_data_attach/accf_data_attach.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/sockets/accf_data_attach/accf_data_attach.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/sockets/kqueue/Makefile b/tools/regression/sockets/kqueue/Makefile
new file mode 100644
index 0000000..53d34a9
--- /dev/null
+++ b/tools/regression/sockets/kqueue/Makefile
@@ -0,0 +1,8 @@
+#
+# $FreeBSD$
+#
+
+PROG= kqueue
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/kqueue/kqueue.c b/tools/regression/sockets/kqueue/kqueue.c
new file mode 100644
index 0000000..d46db96
--- /dev/null
+++ b/tools/regression/sockets/kqueue/kqueue.c
@@ -0,0 +1,368 @@
+/*-
+ * Copyright (c) 2004 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+static int curtest = 1;
+
+/*-
+ * This test uses UNIX domain socket pairs to perform some basic exercising
+ * of kqueue functionality on sockets. In particular, testing that for read
+ * and write filters, we see the correct detection of whether reads and
+ * writes should actually be able to occur.
+ *
+ * TODO:
+ * - Test read/write filters for listen/accept sockets.
+ * - Handle the XXXRW below regarding datagram sockets.
+ * - Test that watermark/buffer size "data" fields returned by kqueue are
+ * correct.
+ * - Check that kqueue does something sensible when the remote endpoing is
+ * closed.
+ */
+
+#define OK(testname) printf("ok %d - %s\n", curtest, testname); \
+ curtest++;
+
+static void
+fail(int error, const char *func, const char *socktype, const char *rest)
+{
+
+ printf("not ok %d\n", curtest);
+
+ if (socktype == NULL)
+ printf("# %s(): %s\n", func, strerror(error));
+ else if (rest == NULL)
+ printf("# %s(%s): %s\n", func, socktype,
+ strerror(error));
+ else
+ printf("# %s(%s, %s): %s\n", func, socktype, rest,
+ strerror(error));
+ exit(-1);
+}
+
+static void
+fail_assertion(const char *func, const char *socktype, const char *rest,
+ const char *assertion)
+{
+
+ printf("not ok %d - %s\n", curtest, assertion);
+
+ if (socktype == NULL)
+ printf("# %s(): assertion %s failed\n", func,
+ assertion);
+ else if (rest == NULL)
+ printf("# %s(%s): assertion %s failed\n", func,
+ socktype, assertion);
+ else
+ printf("# %s(%s, %s): assertion %s failed\n", func,
+ socktype, rest, assertion);
+ exit(-1);
+}
+
+/*
+ * Test read kevent on a socket pair: check to make sure endpoint 0 isn't
+ * readable when we start, then write to endpoint 1 and confirm that endpoint
+ * 0 is now readable. Drain the write, then check that it's not readable
+ * again. Use non-blocking kqueue operations and socket operations.
+ */
+static void
+test_evfilt_read(int kq, int fd[2], const char *socktype)
+{
+ struct timespec ts;
+ struct kevent ke;
+ ssize_t len;
+ char ch;
+ int i;
+
+ EV_SET(&ke, fd[0], EVFILT_READ, EV_ADD, 0, 0, NULL);
+ if (kevent(kq, &ke, 1, NULL, 0, NULL) == -1)
+ fail(errno, "kevent", socktype, "EVFILT_READ, EV_ADD");
+ OK("EVFILT_READ, EV_ADD");
+
+ /*
+ * Confirm not readable to begin with, no I/O yet.
+ */
+ ts.tv_sec = 0;
+ ts.tv_nsec = 0;
+ i = kevent(kq, NULL, 0, &ke, 1, &ts);
+ if (i == -1)
+ fail(errno, "kevent", socktype, "EVFILT_READ");
+ OK("EVFILT_READ");
+ if (i != 0)
+ fail_assertion("kevent", socktype, "EVFILT_READ",
+ "empty socket unreadable");
+ OK("empty socket unreadable");
+
+ /*
+ * Write a byte to one end.
+ */
+ ch = 'a';
+ len = write(fd[1], &ch, sizeof(ch));
+ if (len == -1)
+ fail(errno, "write", socktype, NULL);
+ OK("write one byte");
+ if (len != sizeof(ch))
+ fail_assertion("write", socktype, NULL, "write length");
+ OK("write one byte length");
+
+ /*
+ * Other end should now be readable.
+ */
+ ts.tv_sec = 0;
+ ts.tv_nsec = 0;
+ i = kevent(kq, NULL, 0, &ke, 1, &ts);
+ if (i == -1)
+ fail(errno, "kevent", socktype, "EVFILT_READ");
+ OK("EVFILT_READ");
+ if (i != 1)
+ fail_assertion("kevent", socktype, "EVFILT_READ",
+ "non-empty socket unreadable");
+ OK("non-empty socket unreadable");
+
+ /*
+ * Read a byte to clear the readable state.
+ */
+ len = read(fd[0], &ch, sizeof(ch));
+ if (len == -1)
+ fail(errno, "read", socktype, NULL);
+ OK("read one byte");
+ if (len != sizeof(ch))
+ fail_assertion("read", socktype, NULL, "read length");
+ OK("read one byte length");
+
+ /*
+ * Now re-check for readability.
+ */
+ ts.tv_sec = 0;
+ ts.tv_nsec = 0;
+ i = kevent(kq, NULL, 0, &ke, 1, &ts);
+ if (i == -1)
+ fail(errno, "kevent", socktype, "EVFILT_READ");
+ OK("EVFILT_READ");
+ if (i != 0)
+ fail_assertion("kevent", socktype, "EVFILT_READ",
+ "empty socket unreadable");
+ OK("empty socket unreadable");
+
+ EV_SET(&ke, fd[0], EVFILT_READ, EV_DELETE, 0, 0, NULL);
+ if (kevent(kq, &ke, 1, NULL, 0, NULL) == -1)
+ fail(errno, "kevent", socktype, "EVFILT_READ, EV_DELETE");
+ OK("EVFILT_READ, EV_DELETE");
+}
+
+static void
+test_evfilt_write(int kq, int fd[2], const char *socktype)
+{
+ struct timespec ts;
+ struct kevent ke;
+ ssize_t len;
+ char ch;
+ int i;
+
+ EV_SET(&ke, fd[0], EVFILT_WRITE, EV_ADD, 0, 0, NULL);
+ if (kevent(kq, &ke, 1, NULL, 0, NULL) == -1)
+ fail(errno, "kevent", socktype, "EVFILT_WRITE, EV_ADD");
+ OK("EVFILE_WRITE, EV_ADD");
+
+ /*
+ * Confirm writable to begin with, no I/O yet.
+ */
+ ts.tv_sec = 0;
+ ts.tv_nsec = 0;
+ i = kevent(kq, NULL, 0, &ke, 1, &ts);
+ if (i == -1)
+ fail(errno, "kevent", socktype, "EVFILT_WRITE");
+ OK("EVFILE_WRITE");
+ if (i != 1)
+ fail_assertion("kevent", socktype, "EVFILT_WRITE",
+ "empty socket unwritable");
+ OK("empty socket unwritable");
+
+ /*
+ * Write bytes into the socket until we can't write anymore.
+ */
+ ch = 'a';
+ while ((len = write(fd[0], &ch, sizeof(ch))) == sizeof(ch)) {};
+ if (len == -1 && errno != EAGAIN && errno != ENOBUFS)
+ fail(errno, "write", socktype, NULL);
+ OK("write");
+ if (len != -1 && len != sizeof(ch))
+ fail_assertion("write", socktype, NULL, "write length");
+ OK("write length");
+
+ /*
+ * Check to make sure the socket is no longer writable.
+ */
+ ts.tv_sec = 0;
+ ts.tv_nsec = 0;
+ i = kevent(kq, NULL, 0, &ke, 1, &ts);
+ if (i == -1)
+ fail(errno, "kevent", socktype, "EVFILT_WRITE");
+ OK("EVFILT_WRITE");
+ if (i != 0)
+ fail_assertion("kevent", socktype, "EVFILT_WRITE",
+ "full socket writable");
+ OK("full socket writable");
+
+ EV_SET(&ke, fd[0], EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
+ if (kevent(kq, &ke, 1, NULL, 0, NULL) == -1)
+ fail(errno, "kevent", socktype, "EVFILT_WRITE, EV_DELETE");
+ OK("EVFILT_WRITE, EV_DELETE");
+}
+
+/*
+ * Basic registration exercise for kqueue(2). Create several types/brands of
+ * sockets, and confirm that we can register for various events on them.
+ */
+int
+main(int argc, char *argv[])
+{
+ int i, kq, sv[2];
+
+ printf("1..49\n");
+
+ kq = kqueue();
+ if (kq == -1)
+ fail(errno, "kqueue", NULL, NULL);
+ OK("kqueue()");
+
+ /*
+ * Create a UNIX domain datagram socket, and attach/test/detach a
+ * read filter on it.
+ */
+ if (socketpair(PF_UNIX, SOCK_DGRAM, 0, sv) == -1)
+ fail(errno, "socketpair", "PF_UNIX, SOCK_DGRAM", NULL);
+ OK("socketpair() 1");
+
+ if (fcntl(sv[0], F_SETFL, O_NONBLOCK) != 0)
+ fail(errno, "fcntl", "PF_UNIX, SOCK_DGRAM", "O_NONBLOCK");
+ OK("fcntl() 1");
+ if (fcntl(sv[1], F_SETFL, O_NONBLOCK) != 0)
+ fail(errno, "fcntl", "PF_UNIX, SOCK_DGRAM", "O_NONBLOCK");
+ OK("fnctl() 2");
+
+ test_evfilt_read(kq, sv, "PF_UNIX, SOCK_DGRAM");
+
+ if (close(sv[0]) == -1)
+ fail(errno, "close", "PF_UNIX/SOCK_DGRAM", "sv[0]");
+ OK("close() 1");
+ if (close(sv[1]) == -1)
+ fail(errno, "close", "PF_UNIX/SOCK_DGRAM", "sv[1]");
+ OK("close() 2");
+
+#if 0
+ /*
+ * XXXRW: We disable the write test in the case of datagram sockets,
+ * as kqueue can't tell when the remote socket receive buffer is
+ * full, whereas the UNIX domain socket implementation can tell and
+ * returns ENOBUFS.
+ */
+ /*
+ * Create a UNIX domain datagram socket, and attach/test/detach a
+ * write filter on it.
+ */
+ if (socketpair(PF_UNIX, SOCK_DGRAM, 0, sv) == -1)
+ fail(errno, "socketpair", "PF_UNIX, SOCK_DGRAM", NULL);
+
+ if (fcntl(sv[0], F_SETFL, O_NONBLOCK) != 0)
+ fail(errno, "fcntl", "PF_UNIX, SOCK_DGRAM", "O_NONBLOCK");
+ if (fcntl(sv[1], F_SETFL, O_NONBLOCK) != 0)
+ fail(errno, "fcntl", "PF_UNIX, SOCK_DGRAM", "O_NONBLOCK");
+
+ test_evfilt_write(kq, sv, "PF_UNIX, SOCK_DGRAM");
+
+ if (close(sv[0]) == -1)
+ fail(errno, "close", "PF_UNIX/SOCK_DGRAM", "sv[0]");
+ if (close(sv[1]) == -1)
+ fail(errno, "close", "PF_UNIX/SOCK_DGRAM", "sv[1]");
+#endif
+
+ /*
+ * Create a UNIX domain stream socket, and attach/test/detach a
+ * read filter on it.
+ */
+ if (socketpair(PF_UNIX, SOCK_STREAM, 0, sv) == -1)
+ fail(errno, "socketpair", "PF_UNIX, SOCK_STREAM", NULL);
+ OK("socketpair() 2");
+
+ if (fcntl(sv[0], F_SETFL, O_NONBLOCK) != 0)
+ fail(errno, "fcntl", "PF_UNIX, SOCK_STREAM", "O_NONBLOCK");
+ OK("fcntl() 3");
+ if (fcntl(sv[1], F_SETFL, O_NONBLOCK) != 0)
+ fail(errno, "fcntl", "PF_UNIX, SOCK_STREAM", "O_NONBLOCK");
+ OK("fcntl() 4");
+
+ test_evfilt_read(kq, sv, "PF_UNIX, SOCK_STREAM");
+
+ if (close(sv[0]) == -1)
+ fail(errno, "close", "PF_UNIX/SOCK_STREAM", "sv[0]");
+ OK("close() 3");
+ if (close(sv[1]) == -1)
+ fail(errno, "close", "PF_UNIX/SOCK_STREAM", "sv[1]");
+ OK("close() 4");
+
+ /*
+ * Create a UNIX domain stream socket, and attach/test/detach a
+ * write filter on it.
+ */
+ if (socketpair(PF_UNIX, SOCK_STREAM, 0, sv) == -1)
+ fail(errno, "socketpair", "PF_UNIX, SOCK_STREAM", NULL);
+ OK("socketpair() 3");
+
+ if (fcntl(sv[0], F_SETFL, O_NONBLOCK) != 0)
+ fail(errno, "fcntl", "PF_UNIX, SOCK_STREAM", "O_NONBLOCK");
+ OK("fcntl() 5");
+ if (fcntl(sv[1], F_SETFL, O_NONBLOCK) != 0)
+ fail(errno, "fcntl", "PF_UNIX, SOCK_STREAM", "O_NONBLOCK");
+ OK("fcntl() 6");
+
+ test_evfilt_write(kq, sv, "PF_UNIX, SOCK_STREAM");
+
+ if (close(sv[0]) == -1)
+ fail(errno, "close", "PF_UNIX/SOCK_STREAM", "sv[0]");
+ OK("close() 5");
+ if (close(sv[1]) == -1)
+ fail(errno, "close", "PF_UNIX/SOCK_STREAM", "sv[1]");
+ OK("close() 6");
+
+ if (close(kq) == -1)
+ fail(errno, "close", "kq", NULL);
+ OK("close() 7");
+
+ return (0);
+}
diff --git a/tools/regression/sockets/kqueue/kqueue.t b/tools/regression/sockets/kqueue/kqueue.t
new file mode 100644
index 0000000..8bdfd03
--- /dev/null
+++ b/tools/regression/sockets/kqueue/kqueue.t
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+executable=`basename $0 .t`
+
+make $executable 2>&1 > /dev/null
+
+exec ./$executable
diff --git a/tools/regression/sockets/listen_backlog/Makefile b/tools/regression/sockets/listen_backlog/Makefile
new file mode 100644
index 0000000..aff40e4
--- /dev/null
+++ b/tools/regression/sockets/listen_backlog/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= listen_backlog
+WARNS?= 3
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/listen_backlog/listen_backlog.c b/tools/regression/sockets/listen_backlog/listen_backlog.c
new file mode 100644
index 0000000..be170ab
--- /dev/null
+++ b/tools/regression/sockets/listen_backlog/listen_backlog.c
@@ -0,0 +1,382 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+/*
+ * This regression test is intended to validate that the backlog parameter
+ * set by listen() is properly set, can be retrieved using SO_LISTENQLIMIT,
+ * and that it can be updated by later calls to listen(). We also check that
+ * SO_LISTENQLIMIT cannot be set.
+ *
+ * Future things to test:
+ *
+ * - That if we change the value of kern.ipc.somaxconn, the limits really
+ * do change.
+ *
+ * - That limits are, approximately, enforced and implemented.
+ *
+ * - All this on multiple socket types -- i.e., PF_LOCAL.
+ *
+ * - That we also test SO_LISTENQLEN and SO_LISTENINCQLEN.
+ */
+
+/*
+ * We retrieve kern.ipc.somaxconn before running the tests in order to use a
+ * run-time set value of SOMAXCONN, rather than compile-time set. We assume
+ * that no other process will be simultaneously frobbing it, and these tests
+ * may fail if that assumption is not held.
+ */
+static int somaxconn;
+
+/*
+ * Retrieve the current socket listen queue limit using SO_LISTENQLIMIT.
+ */
+static int
+socket_get_backlog(int sock, int *backlogp, const char *testclass,
+ const char *test, const char *testfunc)
+{
+ socklen_t len;
+ int i;
+
+ len = sizeof(i);
+ if (getsockopt(sock, SOL_SOCKET, SO_LISTENQLIMIT, &i, &len) < 0) {
+ warn("%s: %s: %s: socket_get_backlog: getsockopt("
+ "SOL_SOCKET, SO_LISTENQLIMIT)", testclass, test,
+ testfunc);
+ return (-1);
+ }
+
+ if (len != sizeof(i)) {
+ warnx("%s: %s: %s: socket_get_backlog: getsockopt("
+ "SOL_SOCKET, SO_LISTENQLIMIT): returned size %d",
+ testclass, test, testfunc, len);
+ return (-1);
+ }
+
+ *backlogp = i;
+
+ return (0);
+}
+
+/*
+ * Create a socket, check the queue limit on creation, perform a listen(),
+ * and make sure that the limit was set as expected by listen().
+ */
+static int
+socket_listen(int domain, int type, int protocol, int backlog,
+ int create_backlog_assertion, int listen_backlog_assertion, int *sockp,
+ const char *domainstring, const char *typestring, const char *testclass,
+ const char *test)
+{
+ int backlog_retrieved, sock;
+
+ sock = socket(domain, type, protocol);
+ if (sock < 0) {
+ warn("%s: %s: socket_listen: socket(%s, %s)", testclass,
+ test, domainstring, typestring);
+ close(sock);
+ return (-1);
+ }
+
+ if (socket_get_backlog(sock, &backlog_retrieved, testclass, test,
+ "socket_listen") < 0) {
+ close(sock);
+ return (-1);
+ }
+
+ if (backlog_retrieved != create_backlog_assertion) {
+ warnx("%s: %s: socket_listen: create backlog is %d not %d",
+ testclass, test, backlog_retrieved,
+ create_backlog_assertion);
+ close(sock);
+ return (-1);
+ }
+
+ if (listen(sock, backlog) < 0) {
+ warn("%s: %s: socket_listen: listen(, %d)", testclass, test,
+ backlog);
+ close(sock);
+ return (-1);
+ }
+
+ if (socket_get_backlog(sock, &backlog_retrieved, testclass, test,
+ "socket_listen") < 0) {
+ close(sock);
+ return (-1);
+ }
+
+ if (backlog_retrieved != listen_backlog_assertion) {
+ warnx("%s: %s: socket_listen: listen backlog is %d not %d",
+ testclass, test, backlog_retrieved,
+ listen_backlog_assertion);
+ close(sock);
+ return (-1);
+ }
+
+ *sockp = sock;
+ return (0);
+}
+
+/*
+ * This test creates sockets and tests default states before and after
+ * listen(). Specifically, we expect a queue limit of 0 before listen, and
+ * then various settings for after listen(). If the passed backlog was
+ * either < 0 or > somaxconn, it should be set to somaxconn; otherwise, the
+ * passed queue depth.
+ */
+static void
+test_defaults(void)
+{
+ int sock;
+
+ /*
+ * First pass. Confirm the default is 0. Listen with a backlog of
+ * 0 and confirm it gets set that way.
+ */
+ if (socket_listen(PF_INET, SOCK_STREAM, 0, 0, 0, 0, &sock, "PF_INET",
+ "SOCK_STREAM", "test_defaults", "default_0_listen_0") < 0)
+ exit(-1);
+ close(sock);
+
+ /*
+ * Second pass. Listen with a backlog of -1 and make sure it is set
+ * to somaxconn.
+ */
+ if (socket_listen(PF_INET, SOCK_STREAM, 0, -1, 0, somaxconn, &sock,
+ "PF_INET", "SOCK_STREAM", "test_defaults", "default_0_listen_-1")
+ < 0)
+ exit(-1);
+ close(sock);
+
+ /*
+ * Third pass. Listen with a backlog of 1 and make sure it is set to
+ * 1.
+ */
+ if (socket_listen(PF_INET, SOCK_STREAM, 0, 1, 0, 1, &sock, "PF_INET",
+ "SOCK_STREAM", "test_defaults", "default_0_listen_1") < 0)
+ exit(-1);
+ close(sock);
+
+ /*
+ * Fourth pass. Listen with a backlog of somaxconn and make sure it
+ * is set to somaxconn.
+ */
+ if (socket_listen(PF_INET, SOCK_STREAM, 0, somaxconn, 0, somaxconn,
+ &sock, "PF_INET", "SOCK_STREAM", "test_defaults",
+ "default_0_listen_somaxconn") < 0)
+ exit(-1);
+ close(sock);
+
+ /*
+ * Fifth pass. Listen with a backlog of somaxconn+1 and make sure it
+ * is set to somaxconn.
+ */
+ if (socket_listen(PF_INET, SOCK_STREAM, 0, somaxconn+1, 0, somaxconn,
+ &sock, "PF_INET", "SOCK_STREAM", "test_defaults",
+ "default_0_listen_somaxconn+1") < 0)
+ exit(-1);
+ close(sock);
+}
+
+/*
+ * Create a socket, set the initial listen() state, then update the queue
+ * depth using listen(). Check that the backlog is as expected after both
+ * the first and second listen().
+ */
+static int
+socket_listen_update(int domain, int type, int protocol, int backlog,
+ int update_backlog, int listen_backlog_assertion,
+ int update_backlog_assertion, int *sockp, const char *domainstring,
+ const char *typestring, const char *testclass, const char *test)
+{
+ int backlog_retrieved, sock;
+
+ sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock < 0) {
+ warn("%s: %s: socket_listen_update: socket(%s, %s)",
+ testclass, test, domainstring, typestring);
+ return (-1);
+ }
+
+ if (listen(sock, backlog) < 0) {
+ warn("%s: %s: socket_listen_update: initial listen(, %d)",
+ testclass, test, backlog);
+ close(sock);
+ return (-1);
+ }
+
+ if (socket_get_backlog(sock, &backlog_retrieved, testclass, test,
+ "socket_listen_update") < 0) {
+ close(sock);
+ return (-1);
+ }
+
+ if (backlog_retrieved != listen_backlog_assertion) {
+ warnx("%s: %s: socket_listen_update: initial backlog is %d "
+ "not %d", testclass, test, backlog_retrieved,
+ listen_backlog_assertion);
+ close(sock);
+ return (-1);
+ }
+
+ if (listen(sock, update_backlog) < 0) {
+ warn("%s: %s: socket_listen_update: update listen(, %d)",
+ testclass, test, update_backlog);
+ close(sock);
+ return (-1);
+ }
+
+ if (socket_get_backlog(sock, &backlog_retrieved, testclass, test,
+ "socket_listen_update") < 0) {
+ close(sock);
+ return (-1);
+ }
+
+ if (backlog_retrieved != update_backlog_assertion) {
+ warnx("%s: %s: socket_listen_update: updated backlog is %d "
+ "not %d", testclass, test, backlog_retrieved,
+ update_backlog_assertion);
+ close(sock);
+ return (-1);
+ }
+
+ *sockp = sock;
+ return (0);
+}
+
+/*
+ * This test tests using listen() to update the queue depth after a socket
+ * has already been marked as listening. We test several cases: setting the
+ * socket < 0, 0, 1, somaxconn, and somaxconn + 1.
+ */
+static void
+test_listen_update(void)
+{
+ int sock;
+
+ /*
+ * Set to 5, update to -1, which should give somaxconn.
+ */
+ if (socket_listen_update(PF_INET, SOCK_STREAM, 0, 5, -1, 5, somaxconn,
+ &sock, "PF_INET", "SOCK_STREAM", "test_listen_update",
+ "update_5,-1") < 0)
+ exit(-1);
+ close(sock);
+
+ /*
+ * Set to 5, update to 0, which should give 0.
+ */
+ if (socket_listen_update(PF_INET, SOCK_STREAM, 0, 5, 0, 5, 0, &sock,
+ "PF_INET", "SOCK_STREAM", "test_listen_update", "update_5,0")
+ < 0)
+ exit(-1);
+ close(sock);
+
+ /*
+ * Set to 5, update to 1, which should give 1.
+ */
+ if (socket_listen_update(PF_INET, SOCK_STREAM, 0, 5, 1, 5, 1, &sock,
+ "PF_INET", "SOCK_STREAM", "test_listen_update", "update_5,1")
+ < 0)
+ exit(-1);
+ close(sock);
+
+ /*
+ * Set to 5, update to somaxconn, which should give somaxconn.
+ */
+ if (socket_listen_update(PF_INET, SOCK_STREAM, 0, 5, somaxconn, 5,
+ somaxconn, &sock, "PF_INET", "SOCK_STREAM", "test_listen_update",
+ "update_5,somaxconn") < 0)
+ exit(-1);
+ close(sock);
+
+ /*
+ * Set to 5, update to somaxconn+1, which should give somaxconn.
+ */
+ if (socket_listen_update(PF_INET, SOCK_STREAM, 0, 5, somaxconn+1, 5,
+ somaxconn, &sock, "PF_INET", "SOCK_STREAM", "test_listen_update",
+ "update_5,somaxconn+1") < 0)
+ exit(-1);
+ close(sock);
+}
+
+/*
+ * SO_LISTENQLIMIT is a read-only socket option, so make sure we get an error
+ * if we try to write it.
+ */
+static void
+test_set_qlimit(void)
+{
+ int i, ret, sock;
+
+ sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock < 0)
+ err(-1, "test_set_qlimit: socket(PF_INET, SOCK_STREAM)");
+
+ i = 0;
+ ret = setsockopt(sock, SOL_SOCKET, SO_LISTENQLIMIT, &i, sizeof(i));
+ if (ret < 0 && errno != ENOPROTOOPT) {
+ warn("test_set_qlimit: setsockopt(SOL_SOCKET, "
+ "SO_LISTENQLIMIT, 0): unexpected error");
+ close(sock);
+ }
+
+ if (ret == 0) {
+ warnx("test_set_qlimit: setsockopt(SOL_SOCKET, "
+ "SO_LISTENQLIMIT, 0) succeeded");
+ close(sock);
+ exit(-1);
+ }
+ close(sock);
+}
+
+int
+main(int argc, char *argv[])
+{
+ size_t len;
+
+ len = sizeof(somaxconn);
+ if (sysctlbyname("kern.ipc.somaxconn", &somaxconn, &len, NULL, 0)
+ < 0)
+ err(-1, "sysctlbyname(kern.ipc.somaxconn)");
+
+ test_defaults();
+ test_listen_update();
+ test_set_qlimit();
+
+ return (0);
+}
diff --git a/tools/regression/sockets/listenclose/Makefile b/tools/regression/sockets/listenclose/Makefile
new file mode 100644
index 0000000..4ca3ddf
--- /dev/null
+++ b/tools/regression/sockets/listenclose/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= listenclose
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/listenclose/listenclose.c b/tools/regression/sockets/listenclose/listenclose.c
new file mode 100644
index 0000000..425e39f
--- /dev/null
+++ b/tools/regression/sockets/listenclose/listenclose.c
@@ -0,0 +1,111 @@
+/*-
+ * Copyright (c) 2004-2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <arpa/inet.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * The listenclose regression test is designed to catch kernel bugs that may
+ * trigger as a result of performing a close on a listen() socket with as-yet
+ * unaccepted connections in its queues. This results in the connections
+ * being aborted, which is a not-often-followed code path. To do this, we
+ * create a local TCP socket, build a non-blocking connection to it, and then
+ * close the accept socket. The connection must be non-blocking or the
+ * program will block and as such connect() will not return as accept() is
+ * never called.
+ */
+
+int
+main(int argc, char *argv[])
+{
+ int listen_sock, connect_sock;
+ struct sockaddr_in sin;
+ socklen_t len;
+ u_short port;
+ int arg;
+
+ listen_sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (listen_sock == -1)
+ errx(-1,
+ "socket(PF_INET, SOCK_STREAM, 0) for listen socket: %s",
+ strerror(errno));
+
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = 0;
+
+ if (bind(listen_sock, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ errx(-1, "bind(%s, %d) for listen socket: %s",
+ inet_ntoa(sin.sin_addr), 0, strerror(errno));
+
+ len = sizeof(sin);
+ if (getsockname(listen_sock, (struct sockaddr *)&sin, &len) < 0)
+ errx(-1, "getsockname() for listen socket: %s",
+ strerror(errno));
+ port = sin.sin_port;
+
+ if (listen(listen_sock, -1) < 0)
+ errx(-1, "listen() for listen socket: %s", strerror(errno));
+
+ connect_sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (connect_sock == -1)
+ errx(-1, "socket(PF_INET, SOCK_STREAM, 0) for connect "
+ "socket: %s", strerror(errno));
+
+ arg = O_NONBLOCK;
+ if (fcntl(connect_sock, F_SETFL, &arg) < 0)
+ errx(-1, "socket(PF_INET, SOCK_STREAM, 0) for connect socket"
+ ": %s", strerror(errno));
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = port;
+
+ if (connect(connect_sock, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ errx(-1, "connect() for connect socket: %s", strerror(errno));
+ close(connect_sock);
+ close(listen_sock);
+
+ return (0);
+}
diff --git a/tools/regression/sockets/pr_atomic/Makefile b/tools/regression/sockets/pr_atomic/Makefile
new file mode 100644
index 0000000..b825c80
--- /dev/null
+++ b/tools/regression/sockets/pr_atomic/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= pr_atomic
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/pr_atomic/pr_atomic.c b/tools/regression/sockets/pr_atomic/pr_atomic.c
new file mode 100644
index 0000000..69bbac7
--- /dev/null
+++ b/tools/regression/sockets/pr_atomic/pr_atomic.c
@@ -0,0 +1,109 @@
+/*-
+ * Copyright (c) 2006 Bruce M. Simpson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Regression test for uiomove in kernel; specifically for PR kern/38495.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#include <stdlib.h>
+#include <signal.h>
+#include <setjmp.h>
+#include <string.h>
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+#define TEST_SOCKET "/tmp/test_socket"
+
+static jmp_buf myjmpbuf;
+
+void handle_sigalrm(int signo);
+
+void handle_sigalrm(int signo)
+{
+ longjmp(myjmpbuf, 1);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct sockaddr_un un;
+ pid_t pid;
+ int s;
+
+ s = socket(PF_LOCAL, SOCK_DGRAM, 0);
+ if (s == -1)
+ errx(-1, "socket");
+ memset(&un, 0, sizeof(un));
+ un.sun_family = AF_LOCAL;
+ unlink(TEST_SOCKET);
+ strcpy(un.sun_path, TEST_SOCKET);
+ if (bind(s, (struct sockaddr *)&un, sizeof(un)) == -1)
+ errx(-1, "bind");
+ pid = fork();
+ if (pid == -1)
+ errx(-1, "fork");
+ if (pid == 0) {
+ int conn;
+ char buf[] = "AAAAAAAAA";
+
+ close(s);
+ conn = socket(AF_LOCAL, SOCK_DGRAM, 0);
+ if (conn == -1)
+ errx(-1,"socket");
+ if (sendto(conn, buf, sizeof(buf), 0, (struct sockaddr *)&un,
+ sizeof(un)) != sizeof(buf))
+ errx(-1,"sendto");
+ close(conn);
+ _exit(0);
+ }
+
+ sleep(5);
+
+ /* Make sure the data is there when we try to receive it. */
+ if (recvfrom(s, (void *)-1, 1, 0, NULL, NULL) != -1)
+ errx(-1,"recvfrom succeeded when failure expected");
+
+ (void)signal(SIGALRM, handle_sigalrm);
+ if (setjmp(myjmpbuf) == 0) {
+ /*
+ * This recvfrom will panic an unpatched system, and block
+ * a patched one.
+ */
+ alarm(5);
+ (void)recvfrom(s, (void *)-1, 1, 0, NULL, NULL);
+ }
+
+ /* We should reach here via longjmp() and all should be well. */
+
+ return (0);
+}
diff --git a/tools/regression/sockets/reconnect/Makefile b/tools/regression/sockets/reconnect/Makefile
new file mode 100644
index 0000000..21babc6
--- /dev/null
+++ b/tools/regression/sockets/reconnect/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= reconnect
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/reconnect/reconnect.c b/tools/regression/sockets/reconnect/reconnect.c
new file mode 100644
index 0000000..02922bf
--- /dev/null
+++ b/tools/regression/sockets/reconnect/reconnect.c
@@ -0,0 +1,140 @@
+/*-
+ * Copyright (c) 2005 Maxim Sobolev
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * The reconnect regression test is designed to catch kernel bug that may
+ * prevent changing association of already associated datagram unix domain
+ * socket when server side of connection has been closed.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/uio.h>
+#include <sys/un.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <string.h>
+#include <unistd.h>
+
+static char *uds_name1 = NULL;
+static char *uds_name2 = NULL;
+
+#define sstosa(ss) ((struct sockaddr *)(ss))
+
+void
+prepare_ifsun(struct sockaddr_un *ifsun, const char *path)
+{
+
+ memset(ifsun, '\0', sizeof(*ifsun));
+#if !defined(__linux__) && !defined(__solaris__)
+ ifsun->sun_len = strlen(path);
+#endif
+ ifsun->sun_family = AF_LOCAL;
+ strcpy(ifsun->sun_path, path);
+}
+
+int
+create_uds_server(const char *path)
+{
+ struct sockaddr_un ifsun;
+ int sock;
+
+ prepare_ifsun(&ifsun, path);
+
+ unlink(ifsun.sun_path);
+
+ sock = socket(PF_LOCAL, SOCK_DGRAM, 0);
+ if (sock == -1)
+ err(1, "can't create socket");
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &sock, sizeof(sock));
+ if (bind(sock, sstosa(&ifsun), sizeof(ifsun)) < 0)
+ err(1, "can't bind to a socket");
+
+ return sock;
+}
+
+void
+connect_uds_server(int sock, const char *path)
+{
+ struct sockaddr_un ifsun;
+ int e;
+
+ prepare_ifsun(&ifsun, path);
+
+ e = connect(sock, sstosa(&ifsun), sizeof(ifsun));
+ if (e < 0)
+ err(1, "can't connect to a socket");
+}
+
+void
+cleanup(void)
+{
+
+ if (uds_name1 != NULL)
+ unlink(uds_name1);
+ if (uds_name2 != NULL)
+ unlink(uds_name2);
+}
+
+int
+main()
+{
+ int s_sock1, s_sock2, c_sock;
+
+ atexit(cleanup);
+
+ uds_name1 = strdup("/tmp/reconnect.XXXXXX");
+ if (uds_name1 == NULL)
+ err(1, "can't allocate memory");
+ uds_name1 = mktemp(uds_name1);
+ if (uds_name1 == NULL)
+ err(1, "mktemp(3) failed");
+ s_sock1 = create_uds_server(uds_name1);
+
+ uds_name2 = strdup("/tmp/reconnect.XXXXXX");
+ if (uds_name2 == NULL)
+ err(1, "can't allocate memory");
+ uds_name2 = mktemp(uds_name2);
+ if (uds_name2 == NULL)
+ err(1, "mktemp(3) failed");
+ s_sock2 = create_uds_server(uds_name2);
+
+ c_sock = socket(PF_LOCAL, SOCK_DGRAM, 0);
+ if (c_sock < 0)
+ err(1, "can't create socket");
+
+ connect_uds_server(c_sock, uds_name1);
+ close(s_sock1);
+ connect_uds_server(c_sock, uds_name2);
+
+ exit (0);
+}
diff --git a/tools/regression/sockets/rtsocket/Makefile b/tools/regression/sockets/rtsocket/Makefile
new file mode 100644
index 0000000..51a9452
--- /dev/null
+++ b/tools/regression/sockets/rtsocket/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= rtsocket
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/rtsocket/rtsocket.c b/tools/regression/sockets/rtsocket/rtsocket.c
new file mode 100644
index 0000000..6a0738b
--- /dev/null
+++ b/tools/regression/sockets/rtsocket/rtsocket.c
@@ -0,0 +1,101 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Simple routing socket regression test: create and destroy a raw routing
+ * socket, and make sure that dgram and stream don't work, socketpair, etc.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <net/route.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+int
+main(int argc, char *argv[])
+{
+ int sock, socks[2];
+
+ sock = socket(PF_ROUTE, SOCK_STREAM, 0);
+ if (sock >= 0) {
+ close(sock);
+ errx(-1, "socket(PF_ROUTE, SOCK_STREAM, 0) returned %d",
+ sock);
+ }
+
+ if (errno != EPROTONOSUPPORT)
+ err(-1, "socket(PF_ROUTE, SOCK_STREAM, 0)");
+
+ sock = socket(PF_ROUTE, SOCK_DGRAM, 0);
+ if (sock >= 0) {
+ close(sock);
+ errx(-1, "socket(PF_ROUTE, SOCK_DGRAM, 0) returned %d",
+ sock);
+ }
+
+ if (errno != EPROTONOSUPPORT)
+ err(-1, "socket(PF_ROUTE, SOCK_DGRAM, 0)");
+
+ sock = socket(PF_ROUTE, SOCK_RAW, 0);
+ if (sock < 0)
+ err(-1, "socket(PF_ROUTE, SOCK_RAW, 0)");
+ close(sock);
+
+ if (socketpair(PF_ROUTE, SOCK_STREAM, 0, socks) == 0) {
+ close(socks[0]);
+ close(socks[1]);
+ errx(-1,
+ "socketpair(PF_ROUTE, SOCK_STREAM, 0, socks) success");
+ }
+
+ if (errno != EPROTONOSUPPORT)
+ err(-1, "socketpair(PF_ROUTE, SOCK_STREAM, 0, socks)");
+
+ if (socketpair(PF_ROUTE, SOCK_DGRAM, 0, socks) == 0) {
+ close(socks[0]);
+ close(socks[1]);
+ errx(-1,
+ "socketpair(PF_ROUTE, SOCK_DGRAM, 0, socks) success");
+ }
+
+ if (errno != EPROTONOSUPPORT)
+ err(-1, "socketpair(PF_ROUTE, SOCK_DGRAM, 0, socks)");
+
+ if (socketpair(PF_ROUTE, SOCK_RAW, 0, socks) == 0) {
+ close(socks[0]);
+ close(socks[1]);
+ errx(-1,
+ "socketpair(PF_ROUTE, SOCK_STREAM, 0, socks) success");
+ }
+
+ return (0);
+}
diff --git a/tools/regression/sockets/sblock/Makefile b/tools/regression/sockets/sblock/Makefile
new file mode 100644
index 0000000..97343fc
--- /dev/null
+++ b/tools/regression/sockets/sblock/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= sblock
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/sblock/sblock.c b/tools/regression/sockets/sblock/sblock.c
new file mode 100644
index 0000000..a508811
--- /dev/null
+++ b/tools/regression/sockets/sblock/sblock.c
@@ -0,0 +1,207 @@
+/*-
+ * Copyright (c) 2007 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Sockets serialize I/O in each direction in order to avoid interlacing of
+ * I/O by multiple processes or threcvs recving or sending the socket. This
+ * is done using some form of kernel lock (varies by kernel version), called
+ * "sblock" in FreeBSD. However, to avoid unkillable processes waiting on
+ * I/O that may be entirely controlled by a remote network endpoint, that
+ * lock acquisition must be interruptible.
+ *
+ * To test this, set up a local domain stream socket pair and a set of three
+ * processes. Two processes block in recv(), the first on sbwait (wait for
+ * I/O), and the second on the sblock waiting for the first to finish. A
+ * third process is responsible for signalling the second process, then
+ * writing to the socket. Depending on the error returned in the second
+ * process, we can tell whether the sblock wait was interrupted, or if
+ * instead the process only woke up when the write was performed.
+ */
+
+#include <sys/socket.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int interrupted;
+static void
+signal_handler(int signum)
+{
+
+ interrupted++;
+}
+
+/*
+ * Process that will perform a blocking recv on a UNIX domain socket. This
+ * should return one byte of data.
+ */
+static void
+blocking_recver(int fd)
+{
+ ssize_t len;
+ char ch;
+
+ len = recv(fd, &ch, sizeof(ch), 0);
+ if (len < 0)
+ err(-1, "FAIL: blocking_recver: recv");
+ if (len == 0)
+ errx(-1, "FAIL: blocking_recver: recv: eof");
+ if (len != 1)
+ errx(-1, "FAIL: blocking_recver: recv: %d bytes", len);
+ if (interrupted)
+ errx(-1, "FAIL: blocking_recver: interrupted wrong pid");
+}
+
+/*
+ * Process that will perform a locking recv on a UNIX domain socket.
+ *
+ * This is where we figure out if the test worked or not. If it has failed,
+ * then recv() will return EOF, as the close() arrives before the signal,
+ * meaning that the wait for the sblock was not interrupted; if it has
+ * succeeded, we get EINTR as the signal interrupts the lock request.
+ */
+static void
+locking_recver(int fd)
+{
+ ssize_t len;
+ char ch;
+
+ if (sleep(1) < 0)
+ err(-1, "FAIL: locking_recver: sleep");
+ len = recv(fd, &ch, sizeof(ch), 0);
+ if (len < 0 && errno != EINTR)
+ err(-1, "FAIL: locking_recver: recv");
+ if (len < 0 && errno == EINTR) {
+ fprintf(stderr, "PASS\n");
+ exit(0);
+ }
+ if (len == 0)
+ errx(-1, "FAIL: locking_recver: recv: eof");
+ if (!interrupted)
+ errx(-1, "FAIL: locking_recver: not interrupted");
+}
+
+static void
+signaller(pid_t locking_recver_pid, int fd)
+{
+ ssize_t len;
+ char ch;
+
+ if (sleep(2) < 0) {
+ warn("signaller sleep(2)");
+ return;
+ }
+ if (kill(locking_recver_pid, SIGHUP) < 0) {
+ warn("signaller kill(%d)", locking_recver_pid);
+ return;
+ }
+ if (sleep(1) < 0) {
+ warn("signaller sleep(1)");
+ return;
+ }
+ len = send(fd, &ch, sizeof(ch), 0);
+ if (len < 0) {
+ warn("signaller send");
+ return;
+ }
+ if (len != sizeof(ch)) {
+ warnx("signaller send ret %d", len);
+ return;
+ }
+ if (close(fd) < 0) {
+ warn("signaller close");
+ return;
+ }
+ if (sleep(1) < 0) {
+ warn("signaller sleep(1)");
+ return;
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ int error, fds[2], recver_fd, sender_fd;
+ pid_t blocking_recver_pid;
+ pid_t locking_recver_pid;
+ struct sigaction sa;
+
+ if (sigaction(SIGHUP, NULL, &sa) < 0)
+ err(-1, "FAIL: sigaction(SIGHUP, NULL, &sa)");
+
+ sa.sa_handler = signal_handler;
+ if (sa.sa_flags & SA_RESTART)
+ printf("SIGHUP restartable by default (cleared)\n");
+ sa.sa_flags &= ~SA_RESTART;
+
+ if (sigaction(SIGHUP, &sa, NULL) < 0)
+ err(-1, "FAIL: sigaction(SIGHUP, &sa, NULL)");
+
+#if 0
+ if (signal(SIGHUP, signal_handler) == SIG_ERR)
+ err(-1, "FAIL: signal(SIGHUP)");
+#endif
+
+ if (socketpair(PF_LOCAL, SOCK_STREAM, 0, fds) < 0)
+ err(-1, "FAIL: socketpair(PF_LOCAL, SOGK_STREAM, 0)");
+
+ sender_fd = fds[0];
+ recver_fd = fds[1];
+
+ blocking_recver_pid = fork();
+ if (blocking_recver_pid < 0)
+ err(-1, "FAIL: fork");
+ if (blocking_recver_pid == 0) {
+ close(sender_fd);
+ blocking_recver(recver_fd);
+ exit(0);
+ }
+
+ locking_recver_pid = fork();
+ if (locking_recver_pid < 0) {
+ error = errno;
+ kill(blocking_recver_pid, SIGKILL);
+ errno = error;
+ err(-1, "FAIL: fork");
+ }
+ if (locking_recver_pid == 0) {
+ close(sender_fd);
+ locking_recver(recver_fd);
+ exit(0);
+ }
+
+ signaller(locking_recver_pid, sender_fd);
+
+ kill(blocking_recver_pid, SIGKILL);
+ kill(locking_recver_pid, SIGKILL);
+ exit(0);
+}
diff --git a/tools/regression/sockets/sendfile/Makefile b/tools/regression/sockets/sendfile/Makefile
new file mode 100644
index 0000000..e1a43cb
--- /dev/null
+++ b/tools/regression/sockets/sendfile/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= sendfile
+NO_MAN=
+WARNS?= 6
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/sendfile/sendfile.c b/tools/regression/sockets/sendfile/sendfile.c
new file mode 100644
index 0000000..e91151c
--- /dev/null
+++ b/tools/regression/sockets/sendfile/sendfile.c
@@ -0,0 +1,369 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+
+#include <netinet/in.h>
+
+#include <err.h>
+#include <limits.h>
+#include <signal.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Simple regression test for sendfile. Creates a file sized at three pages
+ * and then proceeds to send it over a series of sockets, exercising a number
+ * of cases and performing limited validation.
+ */
+
+#define TEST_PORT 5678
+#define TEST_MAGIC 0x4440f7bb
+#define TEST_PAGES 4
+#define TEST_SECONDS 30
+
+struct test_header {
+ u_int32_t th_magic;
+ u_int32_t th_header_length;
+ u_int32_t th_offset;
+ u_int32_t th_length;
+};
+
+pid_t child_pid, parent_pid;
+int listen_socket;
+int file_fd;
+
+static int
+test_th(struct test_header *th, u_int32_t *header_length, u_int32_t *offset,
+ u_int32_t *length)
+{
+
+ if (th->th_magic != htonl(TEST_MAGIC))
+ return (0);
+ *header_length = ntohl(th->th_header_length);
+ *offset = ntohl(th->th_offset);
+ *length = ntohl(th->th_length);
+ return (1);
+}
+
+static void
+signal_alarm(int signum)
+{
+
+ (void)signum;
+}
+
+static void
+setup_alarm(int seconds)
+{
+
+ signal(SIGALRM, signal_alarm);
+ alarm(seconds);
+}
+
+static void
+cancel_alarm(void)
+{
+
+ alarm(0);
+ signal(SIGALRM, SIG_DFL);
+}
+
+static void
+receive_test(int accept_socket)
+{
+ u_int32_t header_length, offset, length, counter;
+ struct test_header th;
+ ssize_t len;
+ char ch;
+
+ len = read(accept_socket, &th, sizeof(th));
+ if (len < 0)
+ err(1, "read");
+ if ((size_t)len < sizeof(th))
+ errx(1, "read: %zd", len);
+
+ if (test_th(&th, &header_length, &offset, &length) == 0)
+ errx(1, "test_th: bad");
+
+ counter = 0;
+ while (1) {
+ len = read(accept_socket, &ch, sizeof(ch));
+ if (len < 0)
+ err(1, "read");
+ if (len == 0)
+ break;
+ counter++;
+ /* XXXRW: Validate byte here. */
+ }
+ if (counter != header_length + length)
+ errx(1, "receive_test: expected (%d, %d) received %d",
+ header_length, length, counter);
+}
+
+static void
+run_child(void)
+{
+ int accept_socket;
+
+ while (1) {
+ accept_socket = accept(listen_socket, NULL, NULL);
+ setup_alarm(TEST_SECONDS);
+ receive_test(accept_socket);
+ cancel_alarm();
+ close(accept_socket);
+ }
+}
+
+static int
+new_test_socket(void)
+{
+ struct sockaddr_in sin;
+ int connect_socket;
+
+ connect_socket = socket(PF_INET, SOCK_STREAM, 0);
+ if (connect_socket < 0)
+ err(1, "socket");
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(TEST_PORT);
+
+ if (connect(connect_socket, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(1, "connect");
+
+ return (connect_socket);
+}
+
+static void
+init_th(struct test_header *th, u_int32_t header_length, u_int32_t offset,
+ u_int32_t length)
+{
+
+ bzero(th, sizeof(*th));
+ th->th_magic = htonl(TEST_MAGIC);
+ th->th_header_length = htonl(header_length);
+ th->th_offset = htonl(offset);
+ th->th_length = htonl(length);
+}
+
+static void
+send_test(int connect_socket, u_int32_t header_length, u_int32_t offset,
+ u_int32_t length)
+{
+ struct test_header th;
+ struct sf_hdtr hdtr, *hdtrp;
+ struct iovec headers;
+ char *header;
+ ssize_t len;
+ off_t off;
+
+ len = lseek(file_fd, 0, SEEK_SET);
+ if (len < 0)
+ err(1, "lseek");
+ if (len != 0)
+ errx(1, "lseek: %zd", len);
+
+ init_th(&th, header_length, offset, length);
+
+ len = write(connect_socket, &th, sizeof(th));
+ if (len < 0)
+ err(1, "send");
+ if (len != sizeof(th))
+ err(1, "send: %zd", len);
+
+ if (header_length != 0) {
+ header = malloc(header_length);
+ if (header == NULL)
+ err(1, "malloc");
+ hdtrp = &hdtr;
+ bzero(&headers, sizeof(headers));
+ headers.iov_base = header;
+ headers.iov_len = header_length;
+ bzero(&hdtr, sizeof(hdtr));
+ hdtr.headers = &headers;
+ hdtr.hdr_cnt = 1;
+ hdtr.trailers = NULL;
+ hdtr.trl_cnt = 0;
+ } else {
+ hdtrp = NULL;
+ header = NULL;
+ }
+
+ if (sendfile(file_fd, connect_socket, offset, length, hdtrp, &off,
+ 0) < 0)
+ err(1, "sendfile");
+
+ if (length == 0) {
+ struct stat sb;
+
+ if (fstat(file_fd, &sb) < 0)
+ err(1, "fstat");
+ length = sb.st_size - offset;
+ }
+
+ if (off != length) {
+ errx(1, "sendfile: off(%ju) != length(%ju)",
+ (uintmax_t)off, (uintmax_t)length);
+ }
+
+ if (header != NULL)
+ free(header);
+}
+
+static void
+run_parent(void)
+{
+ int connect_socket;
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, 0, 1);
+ close(connect_socket);
+
+ sleep(1);
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, 0, getpagesize());
+ close(connect_socket);
+
+ sleep(1);
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, 1, 1);
+ close(connect_socket);
+
+ sleep(1);
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, 1, getpagesize());
+ close(connect_socket);
+
+ sleep(1);
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, getpagesize(), getpagesize());
+ close(connect_socket);
+
+ sleep(1);
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, 0, 2 * getpagesize());
+ close(connect_socket);
+
+ sleep(1);
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, 0, 0);
+ close(connect_socket);
+
+ sleep(1);
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, getpagesize(), 0);
+ close(connect_socket);
+
+ sleep(1);
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, 2 * getpagesize(), 0);
+ close(connect_socket);
+
+ sleep(1);
+
+ connect_socket = new_test_socket();
+ send_test(connect_socket, 0, TEST_PAGES * getpagesize(), 0);
+ close(connect_socket);
+
+ sleep(1);
+
+ (void)kill(child_pid, SIGKILL);
+}
+
+int
+main(void)
+{
+ char path[PATH_MAX], *page_buffer;
+ struct sockaddr_in sin;
+ int pagesize;
+ ssize_t len;
+
+ pagesize = getpagesize();
+ page_buffer = malloc(TEST_PAGES * pagesize);
+ if (page_buffer == NULL)
+ err(1, "malloc");
+ bzero(page_buffer, TEST_PAGES * pagesize);
+
+ listen_socket = socket(PF_INET, SOCK_STREAM, 0);
+ if (listen_socket < 0)
+ err(1, "socket");
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(TEST_PORT);
+
+ snprintf(path, PATH_MAX, "/tmp/sendfile.XXXXXXXXXXXX");
+ file_fd = mkstemp(path);
+ (void)unlink(path);
+
+ len = write(file_fd, page_buffer, TEST_PAGES * pagesize);
+ if (len < 0)
+ err(1, "write");
+
+ len = lseek(file_fd, 0, SEEK_SET);
+ if (len < 0)
+ err(1, "lseek");
+ if (len != 0)
+ errx(1, "lseek: %zd", len);
+
+ if (bind(listen_socket, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(1, "bind");
+
+ if (listen(listen_socket, -1) < 0)
+ err(1, "listen");
+
+ parent_pid = getpid();
+ child_pid = fork();
+ if (child_pid < 0)
+ err(1, "fork");
+ if (child_pid == 0) {
+ child_pid = getpid();
+ run_child();
+ } else
+ run_parent();
+
+ return (0);
+}
diff --git a/tools/regression/sockets/shutdown/Makefile b/tools/regression/sockets/shutdown/Makefile
new file mode 100644
index 0000000..775e6e5
--- /dev/null
+++ b/tools/regression/sockets/shutdown/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= shutdown
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/shutdown/shutdown.c b/tools/regression/sockets/shutdown/shutdown.c
new file mode 100644
index 0000000..c4e884d
--- /dev/null
+++ b/tools/regression/sockets/shutdown/shutdown.c
@@ -0,0 +1,108 @@
+/*-
+ * Copyright (C) 2005 The FreeBSD Project. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+ struct sockaddr_in sock;
+ socklen_t len;
+ int listen_sock, connect_sock;
+ u_short port;
+
+ /* Shutdown(2) on an invalid file descriptor has to return EBADF. */
+ if ((shutdown(listen_sock, SHUT_RDWR) != -1) && (errno != EBADF))
+ errx(-1, "shutdown() for invalid file descriptor does not "
+ "return EBADF");
+
+ listen_sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (listen_sock == -1)
+ errx(-1,
+ "socket(PF_INET, SOCK_STREAM, 0) for listen socket: %s",
+ strerror(errno));
+
+ bzero(&sock, sizeof(sock));
+ sock.sin_len = sizeof(sock);
+ sock.sin_family = AF_INET;
+ sock.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sock.sin_port = 0;
+
+ if (bind(listen_sock, (struct sockaddr *)&sock, sizeof(sock)) < 0)
+ errx(-1, "bind(%s, %d) for listen socket: %s",
+ inet_ntoa(sock.sin_addr), sock.sin_port, strerror(errno));
+
+ len = sizeof(sock);
+ if (getsockname(listen_sock, (struct sockaddr *)&sock, &len) < 0)
+ errx(-1, "getsockname() for listen socket: %s",
+ strerror(errno));
+ port = sock.sin_port;
+
+ if (listen(listen_sock, -1) < 0)
+ errx(-1, "listen() for listen socket: %s", strerror(errno));
+
+ connect_sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (connect_sock == -1)
+ errx(-1, "socket(PF_INET, SOCK_STREAM, 0) for connect "
+ "socket: %s", strerror(errno));
+
+ bzero(&sock, sizeof(sock));
+ sock.sin_len = sizeof(sock);
+ sock.sin_family = AF_INET;
+ sock.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sock.sin_port = port;
+
+ if (connect(connect_sock, (struct sockaddr *)&sock, sizeof(sock)) < 0)
+ errx(-1, "connect() for connect socket: %s", strerror(errno));
+ /* Try to pass an invalid flags. */
+ if ((shutdown(connect_sock, SHUT_RD - 1) != -1) && (errno != EINVAL))
+ errx(-1, "shutdown(SHUT_RD - 1) does not return EINVAL");
+ if ((shutdown(connect_sock, SHUT_RDWR + 1) != -1) && (errno != EINVAL))
+ errx(-1, "shutdown(SHUT_RDWR + 1) does not return EINVAL");
+
+ if (shutdown(connect_sock, SHUT_RD) < 0)
+ errx(-1, "shutdown(SHUT_RD) for connect socket: %s",
+ strerror(errno));
+ if (shutdown(connect_sock, SHUT_WR) < 0)
+ errx(-1, "shutdown(SHUT_WR) for connect socket: %s",
+ strerror(errno));
+
+ close(connect_sock);
+ close(listen_sock);
+
+ return (0);
+}
diff --git a/tools/regression/sockets/sigpipe/Makefile b/tools/regression/sockets/sigpipe/Makefile
new file mode 100644
index 0000000..2130154
--- /dev/null
+++ b/tools/regression/sockets/sigpipe/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= sigpipe
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/sigpipe/sigpipe.c b/tools/regression/sockets/sigpipe/sigpipe.c
new file mode 100644
index 0000000..0422576
--- /dev/null
+++ b/tools/regression/sockets/sigpipe/sigpipe.c
@@ -0,0 +1,322 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * This regression test is intended to verify whether or not SIGPIPE is
+ * properly generated in several simple test cases, as well as testing
+ * whether SO_NOSIGPIPE disables SIGPIPE, if available on the system.
+ * SIGPIPE is generated if a write or send is attempted on a socket that has
+ * been shutdown for write. This test runs several test cases with UNIX
+ * domain sockets and TCP sockets to confirm that either EPIPE or SIGPIPE is
+ * properly returned.
+ *
+ * For the purposes of testing TCP, an unused port number must be specified.
+ */
+static void
+usage(void)
+{
+
+ errx(-1, "usage: sigpipe tcpport");
+}
+
+/*
+ * Signal catcher. Set a global flag that can be tested by the caller.
+ */
+static int signaled;
+static int
+got_signal(void)
+{
+
+ return (signaled);
+}
+
+static void
+signal_handler(int signum)
+{
+
+ signaled = 1;
+}
+
+static void
+signal_setup(const char *testname)
+{
+
+ signaled = 0;
+ if (signal(SIGPIPE, signal_handler) == SIG_ERR)
+ err(-1, "%s: signal(SIGPIPE)", testname);
+}
+
+static void
+test_send(const char *testname, int sock)
+{
+ ssize_t len;
+ char ch;
+
+ ch = 0;
+ len = send(sock, &ch, sizeof(ch), 0);
+ if (len < 0) {
+ if (errno == EPIPE)
+ return;
+ err(-1, "%s: send", testname);
+ }
+ errx(-1, "%s: send: returned %d", testname, len);
+}
+
+static void
+test_write(const char *testname, int sock)
+{
+ ssize_t len;
+ char ch;
+
+ ch = 0;
+ len = write(sock, &ch, sizeof(ch));
+ if (len < 0) {
+ if (errno == EPIPE)
+ return;
+ err(-1, "%s: write", testname);
+ }
+ errx(-1, "%s: write: returned %d", testname, len);
+}
+
+static void
+test_send_wantsignal(const char *testname, int sock1, int sock2)
+{
+
+ if (shutdown(sock2, SHUT_WR) < 0)
+ err(-1, "%s: shutdown", testname);
+ signal_setup(testname);
+ test_send(testname, sock2);
+ if (!got_signal())
+ errx(-1, "%s: send: didn't receive SIGPIPE", testname);
+ close(sock1);
+ close(sock2);
+}
+
+#ifdef SO_NOSIGPIPE
+static void
+test_send_dontsignal(const char *testname, int sock1, int sock2)
+{
+ int i;
+
+ i = 1;
+ if (setsockopt(sock2, SOL_SOCKET, SO_NOSIGPIPE, &i, sizeof(i)) < 0)
+ err(-1, "%s: setsockopt(SOL_SOCKET, SO_NOSIGPIPE)", testname);
+ if (shutdown(sock2, SHUT_WR) < 0)
+ err(-1, "%s: shutdown", testname);
+ signal_setup(testname);
+ test_send(testname, sock2);
+ if (got_signal())
+ errx(-1, "%s: send: got SIGPIPE", testname);
+ close(sock1);
+ close(sock2);
+}
+#endif
+
+static void
+test_write_wantsignal(const char *testname, int sock1, int sock2)
+{
+
+ if (shutdown(sock2, SHUT_WR) < 0)
+ err(-1, "%s: shutdown", testname);
+ signal_setup(testname);
+ test_write(testname, sock2);
+ if (!got_signal())
+ errx(-1, "%s: write: didn't receive SIGPIPE", testname);
+ close(sock1);
+ close(sock2);
+}
+
+#ifdef SO_NOSIGPIPE
+static void
+test_write_dontsignal(const char *testname, int sock1, int sock2)
+{
+ int i;
+
+ i = 1;
+ if (setsockopt(sock2, SOL_SOCKET, SO_NOSIGPIPE, &i, sizeof(i)) < 0)
+ err(-1, "%s: setsockopt(SOL_SOCKET, SO_NOSIGPIPE)", testname);
+ if (shutdown(sock2, SHUT_WR) < 0)
+ err(-1, "%s: shutdown", testname);
+ signal_setup(testname);
+ test_write(testname, sock2);
+ if (got_signal())
+ errx(-1, "%s: write: got SIGPIPE", testname);
+ close(sock1);
+ close(sock2);
+}
+#endif
+
+static int listen_sock;
+static void
+tcp_setup(u_short port)
+{
+ struct sockaddr_in sin;
+
+ listen_sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (listen_sock < 0)
+ err(-1, "tcp_setup: listen");
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(port);
+
+ if (bind(listen_sock, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(-1, "tcp_setup: bind");
+
+ if (listen(listen_sock, -1) < 0)
+ err(-1, "tcp_setup: listen");
+}
+
+static void
+tcp_teardown(void)
+{
+
+ close(listen_sock);
+}
+
+static void
+tcp_pair(u_short port, int sock[2])
+{
+ int accept_sock, connect_sock;
+ struct sockaddr_in sin;
+ socklen_t len;
+
+ connect_sock = socket(PF_INET, SOCK_STREAM, 0);
+ if (connect_sock < 0)
+ err(-1, "tcp_pair: socket");
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+ sin.sin_port = htons(port);
+
+ if (connect(connect_sock, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(-1, "tcp_pair: connect");
+
+ sleep(1); /* Time for TCP to settle. */
+
+ len = sizeof(sin);
+ accept_sock = accept(listen_sock, (struct sockaddr *)&sin, &len);
+ if (accept_sock < 0)
+ err(-1, "tcp_pair: accept");
+
+ sleep(1); /* Time for TCP to settle. */
+
+ sock[0] = accept_sock;
+ sock[1] = connect_sock;
+}
+
+int
+main(int argc, char *argv[])
+{
+ char *dummy;
+ int sock[2];
+ long port;
+
+ if (argc != 2)
+ usage();
+
+ port = strtol(argv[1], &dummy, 10);
+ if (port < 0 || port > 65535 || *dummy != '\0')
+ usage();
+
+#ifndef SO_NOSIGPIPE
+ warnx("sigpipe: SO_NOSIGPIPE not defined, skipping some tests");
+#endif
+
+ /*
+ * UNIX domain socketpair().
+ */
+ if (socketpair(PF_LOCAL, SOCK_STREAM, 0, sock) < 0)
+ err(-1, "socketpair(PF_LOCAL, SOCK_STREAM)");
+ test_send_wantsignal("test_send_wantsignal(PF_LOCAL)", sock[0],
+ sock[1]);
+
+#ifdef SO_NOSIGPIPE
+ if (socketpair(PF_LOCAL, SOCK_STREAM, 0, sock) < 0)
+ err(-1, "socketpair(PF_LOCAL, SOCK_STREAM)");
+ test_send_dontsignal("test_send_dontsignal(PF_LOCAL)", sock[0],
+ sock[1]);
+#endif
+
+ if (socketpair(PF_LOCAL, SOCK_STREAM, 0, sock) < 0)
+ err(-1, "socketpair(PF_LOCAL, SOCK_STREAM)");
+ test_write_wantsignal("test_write_wantsignal(PF_LOCAL)", sock[0],
+ sock[1]);
+
+#ifdef SO_NOSIGPIPE
+ if (socketpair(PF_LOCAL, SOCK_STREAM, 0, sock) < 0)
+ err(-1, "socketpair(PF_LOCAL, SOCK_STREAM)");
+ test_write_dontsignal("test_write_dontsignal(PF_LOCAL)", sock[0],
+ sock[1]);
+#endif
+
+ /*
+ * TCP.
+ */
+ tcp_setup(port);
+ tcp_pair(port, sock);
+ test_send_wantsignal("test_send_wantsignal(PF_INET)", sock[0],
+ sock[1]);
+
+#ifdef SO_NOSIGPIPE
+ tcp_pair(port, sock);
+ test_send_dontsignal("test_send_dontsignal(PF_INET)", sock[0],
+ sock[1]);
+#endif
+
+ tcp_pair(port, sock);
+ test_write_wantsignal("test_write_wantsignal(PF_INET)", sock[0],
+ sock[1]);
+
+#ifdef SO_NOSIGPIPE
+ tcp_pair(port, sock);
+ test_write_dontsignal("test_write_dontsignal(PF_INET)", sock[0],
+ sock[1]);
+#endif
+ tcp_teardown();
+
+ fprintf(stderr, "PASS\n");
+ return (0);
+}
diff --git a/tools/regression/sockets/socketpair/Makefile b/tools/regression/sockets/socketpair/Makefile
new file mode 100644
index 0000000..549e219
--- /dev/null
+++ b/tools/regression/sockets/socketpair/Makefile
@@ -0,0 +1,9 @@
+#
+# $FreeBSD$
+#
+
+PROG= socketpair
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/socketpair/socketpair.c b/tools/regression/sockets/socketpair/socketpair.c
new file mode 100644
index 0000000..5f46476
--- /dev/null
+++ b/tools/regression/sockets/socketpair/socketpair.c
@@ -0,0 +1,161 @@
+/*-
+ * Copyright (c) 2004 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Open, then close a set of UNIX domain socket pairs for datagram and
+ * stream.
+ *
+ * Confirm that we can't open INET datagram or stream socket pairs.
+ *
+ * More tests should be added, including confirming that sending on either
+ * endpoint results in data at the other, that the right kind of socket was
+ * created (stream vs. datagram), and that message boundaries fall in the
+ * right places.
+ */
+int
+main(int argc, char *argv[])
+{
+ int fd1, fd2, fd3;
+ int sv[2];
+
+ /*
+ * UNIX domain socket pair, datagram.
+ */
+ if (socketpair(PF_UNIX, SOCK_DGRAM, 0, sv) != 0) {
+ fprintf(stderr, "socketpair(PF_UNIX, SOCK_DGRAM): %s\n",
+ strerror(errno));
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+ if (close(sv[0]) != 0) {
+ fprintf(stderr, "socketpair(PF_UNIX, SOCK_DGRAM) close 0: %s\n",
+ strerror(errno));
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+ if (close(sv[1]) != 0) {
+ fprintf(stderr, "socketpair(PF_UNIX, SOCK_DGRAM) close 1: %s\n",
+ strerror(errno));
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+
+ /*
+ * UNIX domain socket pair, stream.
+ */
+ if (socketpair(PF_UNIX, SOCK_STREAM, 0, sv) != 0) {
+ fprintf(stderr, "socketpair(PF_UNIX, SOCK_STREAM): %s\n",
+ strerror(errno));
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+ if (close(sv[0]) != 0) {
+ fprintf(stderr, "socketpair(PF_UNIX, SOCK_STREAM) close 0: %s\n",
+ strerror(errno));
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+ if (close(sv[1]) != 0) {
+ fprintf(stderr, "socketpair(PF_UNIX, SOCK_STREAM) close 1: "
+ "%s\n", strerror(errno));
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+
+ /*
+ * Confirm that PF_INET datagram socket pair creation fails.
+ */
+ if (socketpair(PF_INET, SOCK_DGRAM, 0, sv) == 0) {
+ fprintf(stderr, "socketpair(PF_INET, SOCK_DGRAM): opened\n");
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+ if (errno != EOPNOTSUPP) {
+ fprintf(stderr, "socketpair(PF_INET, SOCK_DGRAM): %s\n",
+ strerror(errno));
+ fprintf(stderr, "FAIL\n");
+ }
+
+ /*
+ * Confirm that PF_INET stream socket pair creation fails.
+ */
+ if (socketpair(PF_INET, SOCK_STREAM, 0, sv) == 0) {
+ fprintf(stderr, "socketpair(PF_INET, SOCK_STREAM): opened\n");
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+ if (errno != EOPNOTSUPP) {
+ fprintf(stderr, "socketpair(PF_INET, SOCK_STREAM): %s\n",
+ strerror(errno));
+ fprintf(stderr, "FAIL\n");
+ }
+
+ /*
+ * Check for sequential fd allocation, and give up early if not.
+ */
+ fd1 = dup(STDIN_FILENO);
+ fd2 = dup(STDIN_FILENO);
+ if (fd2 != fd1 + 1) {
+ fprintf(stderr, "Non-sequential fd allocation\n");
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+
+ /* Allocate a socketpair using a bad destination address. */
+ if (socketpair(PF_UNIX, SOCK_DGRAM, 0, NULL) == 0) {
+ fprintf(stderr, "socketpair(PF_UNIX, SOCK_DGRAM, NULL): opened\n");
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+ if (errno != EFAULT) {
+ fprintf(stderr, "socketpair(PF_UNIX, SOCK_DGRAM, NULL): %s\n",
+ strerror(errno));
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+
+ /* Allocate a file descriptor and make sure it's fd2+1. */
+ fd3 = dup(STDIN_FILENO);
+ if (fd3 != fd2 + 1) {
+ fprintf(stderr, "socketpair(..., NULL) allocated descriptors\n");
+ fprintf(stderr, "FAIL\n");
+ exit(-1);
+ }
+
+ fprintf(stderr, "PASS\n");
+ exit(0);
+}
diff --git a/tools/regression/sockets/unix_bindconnect/Makefile b/tools/regression/sockets/unix_bindconnect/Makefile
new file mode 100644
index 0000000..ec1dfd0
--- /dev/null
+++ b/tools/regression/sockets/unix_bindconnect/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= unix_bindconnect
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/unix_bindconnect/unix_bindconnect.c b/tools/regression/sockets/unix_bindconnect/unix_bindconnect.c
new file mode 100644
index 0000000..7db82a0
--- /dev/null
+++ b/tools/regression/sockets/unix_bindconnect/unix_bindconnect.c
@@ -0,0 +1,318 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#include <err.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * Simple regression test to exercise some error cases relating to the use of
+ * bind() and connect() on UNIX domain sockets. In particular, make sure
+ * that when two sockets rendezvous using the file system name space, they
+ * get the expected success/failure cases.
+ *
+ * TODO:
+ * - Check that the resulting file mode/owner are right.
+ * - Do the same tests with UNIX domain sockets.
+ * - Check the results of getsockaddr() and getpeeraddr().
+ */
+
+#define SOCK_NAME_ONE "socket.1"
+#define SOCK_NAME_TWO "socket.2"
+
+#define UNWIND_MAX 1024
+
+int unwind_len;
+struct unwind {
+ char u_path[PATH_MAX];
+} unwind_list[UNWIND_MAX];
+
+static void
+push_path(const char *path)
+{
+
+ if (unwind_len >= UNWIND_MAX)
+ err(-1, "push_path: one path too many (%s)", path);
+
+ strlcpy(unwind_list[unwind_len].u_path, path, PATH_MAX);
+ unwind_len++;
+}
+
+static void
+unwind(void)
+{
+ int i;
+
+ for (i = unwind_len - 1; i >= 0; i--) {
+ unlink(unwind_list[i].u_path);
+ rmdir(unwind_list[i].u_path);
+ }
+}
+
+static int
+bind_test(const char *directory_path)
+{
+ char socket_path[PATH_MAX];
+ struct sockaddr_un sun;
+ int sock1, sock2;
+
+ sock1 = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (sock1 < 0) {
+ warn("bind_test: socket(PF_UNIX, SOCK_STREAM, 0)");
+ return (-1);
+ }
+
+ if (snprintf(socket_path, sizeof(socket_path), "%s/%s",
+ directory_path, SOCK_NAME_ONE) >= PATH_MAX) {
+ warn("bind_test: snprintf(socket_path)");
+ close(sock1);
+ return (-1);
+ }
+
+ bzero(&sun, sizeof(sun));
+ sun.sun_len = sizeof(sun);
+ sun.sun_family = AF_UNIX;
+ if (snprintf(sun.sun_path, sizeof(sun.sun_path), "%s", socket_path)
+ >= sizeof(sun.sun_path)) {
+ warn("bind_test: snprintf(sun.sun_path)");
+ close(sock1);
+ return (-1);
+ }
+
+ if (bind(sock1, (struct sockaddr *)&sun, sizeof(sun)) < 0) {
+ warn("bind_test: bind(sun) #1");
+ close(sock1);
+ return (-1);
+ }
+
+ push_path(socket_path);
+
+ /*
+ * Once a STREAM UNIX domain socket has been bound, it can't be
+ * rebound. Expected error is EINVAL.
+ */
+ if (bind(sock1, (struct sockaddr *)&sun, sizeof(sun)) == 0) {
+ warnx("bind_test: bind(sun) #2 succeeded");
+ close(sock1);
+ return (-1);
+ }
+ if (errno != EINVAL) {
+ warn("bind_test: bind(sun) #2");
+ close(sock1);
+ return (-1);
+ }
+
+ sock2 = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (sock2 < 0) {
+ warn("bind_test: socket(PF_UNIX, SOCK_STREAM, 0)");
+ close(sock1);
+ return (-1);
+ }
+
+ /*
+ * Since a socket is already bound to the pathname, it can't be bound
+ * to a second socket. Expected error is EADDRINUSE.
+ */
+ if (bind(sock2, (struct sockaddr *)&sun, sizeof(sun)) == 0) {
+ warnx("bind_test: bind(sun) #3 succeeded");
+ close(sock1);
+ close(sock2);
+ return (-1);
+ }
+ if (errno != EADDRINUSE) {
+ warn("bind_test: bind(sun) #2");
+ close(sock1);
+ close(sock2);
+ return (-1);
+ }
+
+ close(sock1);
+
+ /*
+ * The socket bound to the pathname has been closed, but the pathname
+ * can't be reused without first being unlinked. Expected error is
+ * EADDRINUSE.
+ */
+ if (bind(sock2, (struct sockaddr *)&sun, sizeof(sun)) == 0) {
+ warnx("bind_test: bind(sun) #4 succeeded");
+ close(sock2);
+ return (-1);
+ }
+ if (errno != EADDRINUSE) {
+ warn("bind_test: bind(sun) #4");
+ close(sock2);
+ return (-1);
+ }
+
+ unlink(socket_path);
+
+ /*
+ * The pathname is now free, so the socket should be able to bind to
+ * it.
+ */
+ if (bind(sock2, (struct sockaddr *)&sun, sizeof(sun)) < 0) {
+ warn("bind_test: bind(sun) #5");
+ close(sock2);
+ return (-1);
+ }
+
+ close(sock2);
+ return (0);
+}
+
+static int
+connect_test(const char *directory_path)
+{
+ char socket_path[PATH_MAX];
+ struct sockaddr_un sun;
+ int sock1, sock2;
+
+ sock1 = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (sock1 < 0) {
+ warn("connect_test: socket(PF_UNIX, SOCK_STREAM, 0)");
+ return (-1);
+ }
+
+ if (snprintf(socket_path, sizeof(socket_path), "%s/%s",
+ directory_path, SOCK_NAME_TWO) >= PATH_MAX) {
+ warn("connect_test: snprintf(socket_path)");
+ close(sock1);
+ return (-1);
+ }
+
+ bzero(&sun, sizeof(sun));
+ sun.sun_len = sizeof(sun);
+ sun.sun_family = AF_UNIX;
+ if (snprintf(sun.sun_path, sizeof(sun.sun_path), "%s", socket_path)
+ >= sizeof(sun.sun_path)) {
+ warn("connect_test: snprintf(sun.sun_path)");
+ close(sock1);
+ return (-1);
+ }
+
+ /*
+ * Try connecting to a path that doesn't yet exist. Should fail with
+ * ENOENT.
+ */
+ if (connect(sock1, (struct sockaddr *)&sun, sizeof(sun)) == 0) {
+ warnx("connect_test: connect(sun) #1 succeeded");
+ close(sock1);
+ return (-1);
+ }
+ if (errno != ENOENT) {
+ warn("connect_test: connect(sun) #1");
+ close(sock1);
+ return (-1);
+ }
+
+ if (bind(sock1, (struct sockaddr *)&sun, sizeof(sun)) < 0) {
+ warn("connect_test: bind(sun) #1");
+ close(sock1);
+ return (-1);
+ }
+
+ if (listen(sock1, 3) < 0) {
+ warn("connect_test: listen(sock1)");
+ close(sock1);
+ return (-1);
+ }
+
+ push_path(socket_path);
+
+ sock2 = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (sock2 < 0) {
+ warn("socket(PF_UNIX, SOCK_STREAM, 0)");
+ close(sock1);
+ return (-1);
+ }
+
+ /*
+ * Do a simple connect and make sure that works.
+ */
+ if (connect(sock2, (struct sockaddr *)&sun, sizeof(sun)) < 0) {
+ warn("connect(sun) #2");
+ close(sock1);
+ return (-1);
+ }
+
+ close(sock2);
+
+ close(sock1);
+
+ sock2 = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (sock2 < 0) {
+ warn("socket(PF_UNIX, SOCK_STREAM, 0)");
+ return (-1);
+ }
+
+ /*
+ * Confirm that once the listen socket is closed, we get a
+ * connection refused (ECONNREFUSED) when attempting to connect to
+ * the pathname.
+ */
+ if (connect(sock2, (struct sockaddr *)&sun, sizeof(sun)) == 0) {
+ warnx("connect(sun) #3 succeeded");
+ close(sock2);
+ return (-1);
+ }
+ if (errno != ECONNREFUSED) {
+ warn("connect(sun) #3");
+ close(sock2);
+ return (-1);
+ }
+
+ close(sock2);
+ unlink(socket_path);
+ return (0);
+}
+int
+main(int argc, char *argv[])
+{
+ char directory_path[PATH_MAX];
+ int error;
+
+ strlcpy(directory_path, "/tmp/unix_bind.XXXXXXX", PATH_MAX);
+ if (mkdtemp(directory_path) == NULL)
+ err(-1, "mkdtemp");
+ push_path(directory_path);
+
+ error = bind_test(directory_path);
+
+ if (error == 0)
+ error = connect_test(directory_path);
+
+ unwind();
+ return (error);
+}
diff --git a/tools/regression/sockets/unix_cmsg/Makefile b/tools/regression/sockets/unix_cmsg/Makefile
new file mode 100644
index 0000000..d09cb79
--- /dev/null
+++ b/tools/regression/sockets/unix_cmsg/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= unix_cmsg
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/unix_cmsg/README b/tools/regression/sockets/unix_cmsg/README
new file mode 100644
index 0000000..359da43
--- /dev/null
+++ b/tools/regression/sockets/unix_cmsg/README
@@ -0,0 +1,127 @@
+$FreeBSD$
+
+About unix_cmsg
+================
+
+This program is a collection of regression tests for ancillary (control)
+data for PF_LOCAL sockets (local domain or Unix domain sockets). There
+are tests for stream and datagram sockets.
+
+Usually each test does following steps: create Server, fork Client,
+Client sends something to Server, Server verifies if everything
+is correct in received message. Sometimes Client sends several
+messages to Server.
+
+It is better to change the owner of unix_cmsg to some safe user
+(eg. nobody:nogroup) and set SUID and SGID bits, else some tests
+can give correct results for wrong implementation.
+
+Available options
+=================
+
+-d Output debugging information, values of different fields of
+ received messages, etc. Will produce many lines of information.
+
+-h Output help message and exit.
+
+-t <socktype>
+ Run tests only for the given socket type: "stream" or "dgram".
+ With this option it is possible to run only particular test,
+ not all of them.
+
+-z Do not send real control data if possible. Struct cmsghdr{}
+ should be followed by real control data. It is not clear if
+ a sender should give control data in all cases (this is not
+ documented and an arbitrary application can choose anything).
+
+ At least for PF_LOCAL sockets' control messages with types
+ SCM_CREDS and SCM_TIMESTAMP the kernel does not need any
+ control data. This option allow to not send real control data
+ for SCM_CREDS and SCM_TIMESTAMP control messages.
+
+Description of tests
+====================
+
+For SOCK_STREAM sockets:
+-----------------------
+
+ 1: Sending, receiving cmsgcred
+
+ Client connects to Server and sends two messages with data and
+ control message with SCM_CREDS type to Server. Server should
+ receive two messages, in both messages there should be data and
+ control message with SCM_CREDS type followed by struct cmsgcred{}
+ and this structure should contain correct information.
+
+ 2: Receiving sockcred (listening socket has LOCAL_CREDS)
+
+ Server creates listen socket and set socket option LOCAL_CREDS
+ for it. Client connects to Server and sends two messages with data
+ to Server. Server should receive two messages, in first message
+ there should be data and control message with SCM_CREDS type followed
+ by struct sockcred{} and this structure should contain correct
+ information, in second message there should be data and no control
+ message.
+
+ 3: Receiving sockcred (accepted socket has LOCAL_CREDS)
+
+ Client connects to Server and sends two messages with data. Server
+ accepts connection and set socket option LOCAL_CREDS for just accepted
+ socket (here synchronization is used, to allow Client to see just set
+ flag on Server's socket before sending messages to Server). Server
+ should receive two messages, in first message there should be data and
+ control message with SOCK_CRED type followed by struct sockcred{} and
+ this structure should contain correct information, in second message
+ there should be data and no control message.
+
+ 4: Sending cmsgcred, receiving sockcred
+
+ Server creates listen socket and set socket option LOCAL_CREDS
+ for it. Client connects to Server and sends one message with data
+ and control message with SCM_CREDS type to Server. Server should
+ receive one message with data and control message with SCM_CREDS type
+ followed by struct sockcred{} and this structure should contain
+ correct information.
+
+ 5: Sending, receiving timestamp
+
+ Client connects to Server and sends message with data and control
+ message with SCM_TIMESTAMP type to Server. Server should receive
+ message with data and control message with SCM_TIMESTAMP type
+ followed by struct timeval{}.
+
+For SOCK_DGRAM sockets:
+----------------------
+
+ 1: Sending, receiving cmsgcred
+
+ Client sends to Server two messages with data and control message
+ with SCM_CREDS type to Server. Server should receive two messages,
+ in both messages there should be data and control message with
+ SCM_CREDS type followed by struct cmsgcred{} and this structure
+ should contain correct information.
+
+ 2: Receiving sockcred
+
+ Server creates datagram socket and set socket option LOCAL_CREDS
+ for it. Client sends two messages with data to Server. Server should
+ receive two messages, in both messages there should be data and control
+ message with SCM_CREDS type followed by struct sockcred{} and this
+ structure should contain correct information.
+
+ 3: Sending cmsgcred, receiving sockcred
+
+ Server creates datagram socket and set socket option LOCAL_CREDS
+ for it. Client sends one message with data and control message with
+ SOCK_CREDS type to Server. Server should receive one message with
+ data and control message with SCM_CREDS type followed by struct
+ sockcred{} and this structure should contain correct information.
+
+ 4: Sending, receiving timestamp
+
+ Client sends message with data and control message with SCM_TIMESTAMP
+ type to Server. Server should receive message with data and control
+ message with SCM_TIMESTAMP type followed by struct timeval{}.
+
+- Andrey Simonenko
+simon@comsys.ntu-kpi.kiev.ua
diff --git a/tools/regression/sockets/unix_cmsg/unix_cmsg.c b/tools/regression/sockets/unix_cmsg/unix_cmsg.c
new file mode 100644
index 0000000..6a39ac3
--- /dev/null
+++ b/tools/regression/sockets/unix_cmsg/unix_cmsg.c
@@ -0,0 +1,1630 @@
+/*-
+ * Copyright (c) 2005 Andrey Simonenko
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/resource.h>
+#include <sys/time.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+
+#include <assert.h>
+#include <ctype.h>
+#include <err.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysexits.h>
+#include <unistd.h>
+
+/*
+ * There are tables with tests descriptions and pointers to test
+ * functions. Each t_*() function returns 0 if its test passed,
+ * -1 if its test failed (something wrong was found in local domain
+ * control messages), -2 if some system error occurred. If test
+ * function returns -2, then a program exits.
+ *
+ * Each test function completely control what to do (eg. fork or
+ * do not fork a client process). If a test function forks a client
+ * process, then it waits for its termination. If a return code of a
+ * client process is not equal to zero, or if a client process was
+ * terminated by a signal, then test function returns -2.
+ *
+ * Each test function and complete program are not optimized
+ * a lot to allow easy to modify tests.
+ *
+ * Each function which can block, is run under TIMEOUT, if timeout
+ * occurs, then test function returns -2 or a client process exits
+ * with nonzero return code.
+ */
+
+#ifndef LISTENQ
+# define LISTENQ 1
+#endif
+
+#ifndef TIMEOUT
+# define TIMEOUT 60
+#endif
+
+#define EXTRA_CMSG_SPACE 512 /* Memory for not expected control data. */
+
+static int t_cmsgcred(void), t_sockcred_stream1(void);
+static int t_sockcred_stream2(void), t_cmsgcred_sockcred(void);
+static int t_sockcred_dgram(void), t_timestamp(void);
+
+struct test_func {
+ int (*func)(void); /* Pointer to function. */
+ const char *desc; /* Test description. */
+};
+
+static struct test_func test_stream_tbl[] = {
+ { NULL, " 0: All tests" },
+ { t_cmsgcred, " 1: Sending, receiving cmsgcred" },
+ { t_sockcred_stream1, " 2: Receiving sockcred (listening socket has LOCAL_CREDS)" },
+ { t_sockcred_stream2, " 3: Receiving sockcred (accepted socket has LOCAL_CREDS)" },
+ { t_cmsgcred_sockcred, " 4: Sending cmsgcred, receiving sockcred" },
+ { t_timestamp, " 5: Sending, receiving timestamp" },
+ { NULL, NULL }
+};
+
+static struct test_func test_dgram_tbl[] = {
+ { NULL, " 0: All tests" },
+ { t_cmsgcred, " 1: Sending, receiving cmsgcred" },
+ { t_sockcred_dgram, " 2: Receiving sockcred" },
+ { t_cmsgcred_sockcred, " 3: Sending cmsgcred, receiving sockcred" },
+ { t_timestamp, " 4: Sending, receiving timestamp" },
+ { NULL, NULL }
+};
+
+#define TEST_STREAM_NO_MAX (sizeof(test_stream_tbl) / sizeof(struct test_func) - 2)
+#define TEST_DGRAM_NO_MAX (sizeof(test_dgram_tbl) / sizeof(struct test_func) - 2)
+
+static const char *myname = "SERVER"; /* "SERVER" or "CLIENT" */
+
+static int debug = 0; /* 1, if -d. */
+static int no_control_data = 0; /* 1, if -z. */
+
+static u_int nfailed = 0; /* Number of failed tests. */
+
+static int sock_type; /* SOCK_STREAM or SOCK_DGRAM */
+static const char *sock_type_str; /* "SOCK_STREAM" or "SOCK_DGRAN" */
+
+static char tempdir[] = "/tmp/unix_cmsg.XXXXXXX";
+static char serv_sock_path[PATH_MAX];
+
+static char ipc_message[] = "hello";
+
+#define IPC_MESSAGE_SIZE (sizeof(ipc_message))
+
+static struct sockaddr_un servaddr; /* Server address. */
+
+static sigjmp_buf env_alrm;
+
+static uid_t my_uid;
+static uid_t my_euid;
+static gid_t my_gid;
+static gid_t my_egid;
+
+/*
+ * my_gids[0] is EGID, next items are supplementary GIDs,
+ * my_ngids determines valid items in my_gids array.
+ */
+static gid_t my_gids[NGROUPS_MAX];
+static int my_ngids;
+
+static pid_t client_pid; /* PID of forked client. */
+
+#define dbgmsg(x) do { \
+ if (debug) \
+ logmsgx x ; \
+} while (/* CONSTCOND */0)
+
+static void logmsg(const char *, ...) __printflike(1, 2);
+static void logmsgx(const char *, ...) __printflike(1, 2);
+static void output(const char *, ...) __printflike(1, 2);
+
+extern char *__progname; /* The name of program. */
+
+/*
+ * Output the help message (-h switch).
+ */
+static void
+usage(int quick)
+{
+ const struct test_func *test_func;
+
+ fprintf(stderr, "Usage: %s [-dhz] [-t <socktype>] [testno]\n",
+ __progname);
+ if (quick)
+ return;
+ fprintf(stderr, "\n Options are:\n\
+ -d\t\t\tOutput debugging information\n\
+ -h\t\t\tOutput this help message and exit\n\
+ -t <socktype>\t\tRun test only for the given socket type:\n\
+\t\t\tstream or dgram\n\
+ -z\t\t\tDo not send real control data if possible\n\n");
+ fprintf(stderr, " Available tests for stream sockets:\n");
+ for (test_func = test_stream_tbl; test_func->desc != NULL; ++test_func)
+ fprintf(stderr, " %s\n", test_func->desc);
+ fprintf(stderr, "\n Available tests for datagram sockets:\n");
+ for (test_func = test_dgram_tbl; test_func->desc != NULL; ++test_func)
+ fprintf(stderr, " %s\n", test_func->desc);
+}
+
+/*
+ * printf-like function for outputting to STDOUT_FILENO.
+ */
+static void
+output(const char *format, ...)
+{
+ char buf[128];
+ va_list ap;
+
+ va_start(ap, format);
+ if (vsnprintf(buf, sizeof(buf), format, ap) < 0)
+ err(EX_SOFTWARE, "output: vsnprintf failed");
+ write(STDOUT_FILENO, buf, strlen(buf));
+ va_end(ap);
+}
+
+/*
+ * printf-like function for logging, also outputs message for errno.
+ */
+static void
+logmsg(const char *format, ...)
+{
+ char buf[128];
+ va_list ap;
+ int errno_save;
+
+ errno_save = errno; /* Save errno. */
+
+ va_start(ap, format);
+ if (vsnprintf(buf, sizeof(buf), format, ap) < 0)
+ err(EX_SOFTWARE, "logmsg: vsnprintf failed");
+ if (errno_save == 0)
+ output("%s: %s\n", myname, buf);
+ else
+ output("%s: %s: %s\n", myname, buf, strerror(errno_save));
+ va_end(ap);
+
+ errno = errno_save; /* Restore errno. */
+}
+
+/*
+ * printf-like function for logging, do not output message for errno.
+ */
+static void
+logmsgx(const char *format, ...)
+{
+ char buf[128];
+ va_list ap;
+
+ va_start(ap, format);
+ if (vsnprintf(buf, sizeof(buf), format, ap) < 0)
+ err(EX_SOFTWARE, "logmsgx: vsnprintf failed");
+ output("%s: %s\n", myname, buf);
+ va_end(ap);
+}
+
+/*
+ * Run tests from testno1 to testno2.
+ */
+static int
+run_tests(u_int testno1, u_int testno2)
+{
+ const struct test_func *test_func;
+ u_int i, nfailed1;
+
+ output("Running tests for %s sockets:\n", sock_type_str);
+ test_func = (sock_type == SOCK_STREAM ?
+ test_stream_tbl : test_dgram_tbl) + testno1;
+
+ nfailed1 = 0;
+ for (i = testno1; i <= testno2; ++test_func, ++i) {
+ output(" %s\n", test_func->desc);
+ switch (test_func->func()) {
+ case -1:
+ ++nfailed1;
+ break;
+ case -2:
+ logmsgx("some system error occurred, exiting");
+ return (-1);
+ }
+ }
+
+ nfailed += nfailed1;
+
+ if (testno1 != testno2) {
+ if (nfailed1 == 0)
+ output("-- all tests were passed!\n");
+ else
+ output("-- %u test%s failed!\n", nfailed1,
+ nfailed1 == 1 ? "" : "s");
+ } else {
+ if (nfailed == 0)
+ output("-- test was passed!\n");
+ else
+ output("-- test failed!\n");
+ }
+
+ return (0);
+}
+
+/* ARGSUSED */
+static void
+sig_alrm(int signo __unused)
+{
+ siglongjmp(env_alrm, 1);
+}
+
+/*
+ * Initialize signals handlers.
+ */
+static void
+sig_init(void)
+{
+ struct sigaction sa;
+
+ sa.sa_handler = SIG_IGN;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGPIPE, &sa, (struct sigaction *)NULL) < 0)
+ err(EX_OSERR, "sigaction(SIGPIPE)");
+
+ sa.sa_handler = sig_alrm;
+ if (sigaction(SIGALRM, &sa, (struct sigaction *)NULL) < 0)
+ err(EX_OSERR, "sigaction(SIGALRM)");
+}
+
+int
+main(int argc, char *argv[])
+{
+ const char *errstr;
+ int opt, dgramflag, streamflag;
+ u_int testno1, testno2;
+
+ dgramflag = streamflag = 0;
+ while ((opt = getopt(argc, argv, "dht:z")) != -1)
+ switch (opt) {
+ case 'd':
+ debug = 1;
+ break;
+ case 'h':
+ usage(0);
+ return (EX_OK);
+ case 't':
+ if (strcmp(optarg, "stream") == 0)
+ streamflag = 1;
+ else if (strcmp(optarg, "dgram") == 0)
+ dgramflag = 1;
+ else
+ errx(EX_USAGE, "wrong socket type in -t option");
+ break;
+ case 'z':
+ no_control_data = 1;
+ break;
+ case '?':
+ default:
+ usage(1);
+ return (EX_USAGE);
+ }
+
+ if (optind < argc) {
+ if (optind + 1 != argc)
+ errx(EX_USAGE, "too many arguments");
+ testno1 = strtonum(argv[optind], 0, UINT_MAX, &errstr);
+ if (errstr != NULL)
+ errx(EX_USAGE, "wrong test number: %s", errstr);
+ } else
+ testno1 = 0;
+
+ if (dgramflag == 0 && streamflag == 0)
+ dgramflag = streamflag = 1;
+
+ if (dgramflag && streamflag && testno1 != 0)
+ errx(EX_USAGE, "you can use particular test, only with datagram or stream sockets");
+
+ if (streamflag) {
+ if (testno1 > TEST_STREAM_NO_MAX)
+ errx(EX_USAGE, "given test %u for stream sockets does not exist",
+ testno1);
+ } else {
+ if (testno1 > TEST_DGRAM_NO_MAX)
+ errx(EX_USAGE, "given test %u for datagram sockets does not exist",
+ testno1);
+ }
+
+ my_uid = getuid();
+ my_euid = geteuid();
+ my_gid = getgid();
+ my_egid = getegid();
+ switch (my_ngids = getgroups(sizeof(my_gids) / sizeof(my_gids[0]), my_gids)) {
+ case -1:
+ err(EX_SOFTWARE, "getgroups");
+ /* NOTREACHED */
+ case 0:
+ errx(EX_OSERR, "getgroups returned 0 groups");
+ }
+
+ sig_init();
+
+ if (mkdtemp(tempdir) == NULL)
+ err(EX_OSERR, "mkdtemp");
+
+ if (streamflag) {
+ sock_type = SOCK_STREAM;
+ sock_type_str = "SOCK_STREAM";
+ if (testno1 == 0) {
+ testno1 = 1;
+ testno2 = TEST_STREAM_NO_MAX;
+ } else
+ testno2 = testno1;
+ if (run_tests(testno1, testno2) < 0)
+ goto failed;
+ testno1 = 0;
+ }
+
+ if (dgramflag) {
+ sock_type = SOCK_DGRAM;
+ sock_type_str = "SOCK_DGRAM";
+ if (testno1 == 0) {
+ testno1 = 1;
+ testno2 = TEST_DGRAM_NO_MAX;
+ } else
+ testno2 = testno1;
+ if (run_tests(testno1, testno2) < 0)
+ goto failed;
+ }
+
+ if (rmdir(tempdir) < 0) {
+ logmsg("rmdir(%s)", tempdir);
+ return (EX_OSERR);
+ }
+
+ return (nfailed ? EX_OSERR : EX_OK);
+
+failed:
+ if (rmdir(tempdir) < 0)
+ logmsg("rmdir(%s)", tempdir);
+ return (EX_OSERR);
+}
+
+/*
+ * Create PF_LOCAL socket, if sock_path is not equal to NULL, then
+ * bind() it. Return socket address in addr. Return file descriptor
+ * or -1 if some error occurred.
+ */
+static int
+create_socket(char *sock_path, size_t sock_path_len, struct sockaddr_un *addr)
+{
+ int rv, fd;
+
+ if ((fd = socket(PF_LOCAL, sock_type, 0)) < 0) {
+ logmsg("create_socket: socket(PF_LOCAL, %s, 0)", sock_type_str);
+ return (-1);
+ }
+
+ if (sock_path != NULL) {
+ if ((rv = snprintf(sock_path, sock_path_len, "%s/%s",
+ tempdir, myname)) < 0) {
+ logmsg("create_socket: snprintf failed");
+ goto failed;
+ }
+ if ((size_t)rv >= sock_path_len) {
+ logmsgx("create_socket: too long path name for given buffer");
+ goto failed;
+ }
+
+ memset(addr, 0, sizeof(addr));
+ addr->sun_family = AF_LOCAL;
+ if (strlen(sock_path) >= sizeof(addr->sun_path)) {
+ logmsgx("create_socket: too long path name (>= %lu) for local domain socket",
+ (u_long)sizeof(addr->sun_path));
+ goto failed;
+ }
+ strcpy(addr->sun_path, sock_path);
+
+ if (bind(fd, (struct sockaddr *)addr, SUN_LEN(addr)) < 0) {
+ logmsg("create_socket: bind(%s)", sock_path);
+ goto failed;
+ }
+ }
+
+ return (fd);
+
+failed:
+ if (close(fd) < 0)
+ logmsg("create_socket: close");
+ return (-1);
+}
+
+/*
+ * Call create_socket() for server listening socket.
+ * Return socket descriptor or -1 if some error occurred.
+ */
+static int
+create_server_socket(void)
+{
+ return (create_socket(serv_sock_path, sizeof(serv_sock_path), &servaddr));
+}
+
+/*
+ * Create unbound socket.
+ */
+static int
+create_unbound_socket(void)
+{
+ return (create_socket((char *)NULL, 0, (struct sockaddr_un *)NULL));
+}
+
+/*
+ * Close socket descriptor, if sock_path is not equal to NULL,
+ * then unlink the given path.
+ */
+static int
+close_socket(const char *sock_path, int fd)
+{
+ int error = 0;
+
+ if (close(fd) < 0) {
+ logmsg("close_socket: close");
+ error = -1;
+ }
+ if (sock_path != NULL)
+ if (unlink(sock_path) < 0) {
+ logmsg("close_socket: unlink(%s)", sock_path);
+ error = -1;
+ }
+ return (error);
+}
+
+/*
+ * Connect to server (socket address in servaddr).
+ */
+static int
+connect_server(int fd)
+{
+ dbgmsg(("connecting to %s", serv_sock_path));
+
+ /*
+ * If PF_LOCAL listening socket's queue is full, then connect()
+ * returns ECONNREFUSED immediately, do not need timeout.
+ */
+ if (connect(fd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) {
+ logmsg("connect_server: connect(%s)", serv_sock_path);
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * sendmsg() with timeout.
+ */
+static int
+sendmsg_timeout(int fd, struct msghdr *msg, size_t n)
+{
+ ssize_t nsent;
+
+ dbgmsg(("sending %lu bytes", (u_long)n));
+
+ if (sigsetjmp(env_alrm, 1) != 0) {
+ logmsgx("sendmsg_timeout: cannot send message to %s (timeout)", serv_sock_path);
+ return (-1);
+ }
+
+ (void)alarm(TIMEOUT);
+
+ nsent = sendmsg(fd, msg, 0);
+
+ (void)alarm(0);
+
+ if (nsent < 0) {
+ logmsg("sendmsg_timeout: sendmsg");
+ return (-1);
+ }
+
+ if ((size_t)nsent != n) {
+ logmsgx("sendmsg_timeout: sendmsg: short send: %ld of %lu bytes",
+ (long)nsent, (u_long)n);
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * accept() with timeout.
+ */
+static int
+accept_timeout(int listenfd)
+{
+ int fd;
+
+ dbgmsg(("accepting connection"));
+
+ if (sigsetjmp(env_alrm, 1) != 0) {
+ logmsgx("accept_timeout: cannot accept connection (timeout)");
+ return (-1);
+ }
+
+ (void)alarm(TIMEOUT);
+
+ fd = accept(listenfd, (struct sockaddr *)NULL, (socklen_t *)NULL);
+
+ (void)alarm(0);
+
+ if (fd < 0) {
+ logmsg("accept_timeout: accept");
+ return (-1);
+ }
+
+ return (fd);
+}
+
+/*
+ * recvmsg() with timeout.
+ */
+static int
+recvmsg_timeout(int fd, struct msghdr *msg, size_t n)
+{
+ ssize_t nread;
+
+ dbgmsg(("receiving %lu bytes", (u_long)n));
+
+ if (sigsetjmp(env_alrm, 1) != 0) {
+ logmsgx("recvmsg_timeout: cannot receive message (timeout)");
+ return (-1);
+ }
+
+ (void)alarm(TIMEOUT);
+
+ nread = recvmsg(fd, msg, MSG_WAITALL);
+
+ (void)alarm(0);
+
+ if (nread < 0) {
+ logmsg("recvmsg_timeout: recvmsg");
+ return (-1);
+ }
+
+ if ((size_t)nread != n) {
+ logmsgx("recvmsg_timeout: recvmsg: short read: %ld of %lu bytes",
+ (long)nread, (u_long)n);
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * Wait for synchronization message (1 byte) with timeout.
+ */
+static int
+sync_recv(int fd)
+{
+ ssize_t nread;
+ char buf;
+
+ dbgmsg(("waiting for sync message"));
+
+ if (sigsetjmp(env_alrm, 1) != 0) {
+ logmsgx("sync_recv: cannot receive sync message (timeout)");
+ return (-1);
+ }
+
+ (void)alarm(TIMEOUT);
+
+ nread = read(fd, &buf, 1);
+
+ (void)alarm(0);
+
+ if (nread < 0) {
+ logmsg("sync_recv: read");
+ return (-1);
+ }
+
+ if (nread != 1) {
+ logmsgx("sync_recv: read: short read: %ld of 1 byte",
+ (long)nread);
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * Send synchronization message (1 byte) with timeout.
+ */
+static int
+sync_send(int fd)
+{
+ ssize_t nsent;
+
+ dbgmsg(("sending sync message"));
+
+ if (sigsetjmp(env_alrm, 1) != 0) {
+ logmsgx("sync_send: cannot send sync message (timeout)");
+ return (-1);
+ }
+
+ (void)alarm(TIMEOUT);
+
+ nsent = write(fd, "", 1);
+
+ (void)alarm(0);
+
+ if (nsent < 0) {
+ logmsg("sync_send: write");
+ return (-1);
+ }
+
+ if (nsent != 1) {
+ logmsgx("sync_send: write: short write: %ld of 1 byte",
+ (long)nsent);
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * waitpid() for client with timeout.
+ */
+static int
+wait_client(void)
+{
+ int status;
+ pid_t pid;
+
+ if (sigsetjmp(env_alrm, 1) != 0) {
+ logmsgx("wait_client: cannot get exit status of client PID %ld (timeout)",
+ (long)client_pid);
+ return (-1);
+ }
+
+ (void)alarm(TIMEOUT);
+
+ pid = waitpid(client_pid, &status, 0);
+
+ (void)alarm(0);
+
+ if (pid == (pid_t)-1) {
+ logmsg("wait_client: waitpid");
+ return (-1);
+ }
+
+ if (WIFEXITED(status)) {
+ if (WEXITSTATUS(status) != 0) {
+ logmsgx("wait_client: exit status of client PID %ld is %d",
+ (long)client_pid, WEXITSTATUS(status));
+ return (-1);
+ }
+ } else {
+ if (WIFSIGNALED(status))
+ logmsgx("wait_client: abnormal termination of client PID %ld, signal %d%s",
+ (long)client_pid, WTERMSIG(status), WCOREDUMP(status) ? " (core file generated)" : "");
+ else
+ logmsgx("wait_client: termination of client PID %ld, unknown status",
+ (long)client_pid);
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * Check if n supplementary GIDs in gids are correct. (my_gids + 1)
+ * has (my_ngids - 1) supplementary GIDs of current process.
+ */
+static int
+check_groups(const gid_t *gids, int n)
+{
+ char match[NGROUPS_MAX] = { 0 };
+ int error, i, j;
+
+ if (n != my_ngids - 1) {
+ logmsgx("wrong number of groups %d != %d (returned from getgroups() - 1)",
+ n, my_ngids - 1);
+ error = -1;
+ } else
+ error = 0;
+ for (i = 0; i < n; ++i) {
+ for (j = 1; j < my_ngids; ++j) {
+ if (gids[i] == my_gids[j]) {
+ if (match[j]) {
+ logmsgx("duplicated GID %lu",
+ (u_long)gids[i]);
+ error = -1;
+ } else
+ match[j] = 1;
+ break;
+ }
+ }
+ if (j == my_ngids) {
+ logmsgx("unexpected GID %lu", (u_long)gids[i]);
+ error = -1;
+ }
+ }
+ for (j = 1; j < my_ngids; ++j)
+ if (match[j] == 0) {
+ logmsgx("did not receive supplementary GID %u", my_gids[j]);
+ error = -1;
+ }
+ return (error);
+}
+
+/*
+ * Send n messages with data and control message with SCM_CREDS type
+ * to server and exit.
+ */
+static void
+t_cmsgcred_client(u_int n)
+{
+ union {
+ struct cmsghdr cm;
+ char control[CMSG_SPACE(sizeof(struct cmsgcred))];
+ } control_un;
+ struct msghdr msg;
+ struct iovec iov[1];
+ struct cmsghdr *cmptr;
+ int fd;
+ u_int i;
+
+ assert(n == 1 || n == 2);
+
+ if ((fd = create_unbound_socket()) < 0)
+ goto failed;
+
+ if (connect_server(fd) < 0)
+ goto failed_close;
+
+ iov[0].iov_base = ipc_message;
+ iov[0].iov_len = IPC_MESSAGE_SIZE;
+
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+ msg.msg_control = control_un.control;
+ msg.msg_controllen = no_control_data ?
+ sizeof(struct cmsghdr) : sizeof(control_un.control);
+ msg.msg_flags = 0;
+
+ cmptr = CMSG_FIRSTHDR(&msg);
+ cmptr->cmsg_len = CMSG_LEN(no_control_data ?
+ 0 : sizeof(struct cmsgcred));
+ cmptr->cmsg_level = SOL_SOCKET;
+ cmptr->cmsg_type = SCM_CREDS;
+
+ for (i = 0; i < n; ++i) {
+ dbgmsg(("#%u msg_controllen = %u, cmsg_len = %u", i,
+ (u_int)msg.msg_controllen, (u_int)cmptr->cmsg_len));
+ if (sendmsg_timeout(fd, &msg, IPC_MESSAGE_SIZE) < 0)
+ goto failed_close;
+ }
+
+ if (close_socket((const char *)NULL, fd) < 0)
+ goto failed;
+
+ _exit(0);
+
+failed_close:
+ (void)close_socket((const char *)NULL, fd);
+
+failed:
+ _exit(1);
+}
+
+/*
+ * Receive two messages with data and control message with SCM_CREDS
+ * type followed by struct cmsgcred{} from client. fd1 is a listen
+ * socket for stream sockets or simply socket for datagram sockets.
+ */
+static int
+t_cmsgcred_server(int fd1)
+{
+ char buf[IPC_MESSAGE_SIZE];
+ union {
+ struct cmsghdr cm;
+ char control[CMSG_SPACE(sizeof(struct cmsgcred)) + EXTRA_CMSG_SPACE];
+ } control_un;
+ struct msghdr msg;
+ struct iovec iov[1];
+ struct cmsghdr *cmptr;
+ const struct cmsgcred *cmcredptr;
+ socklen_t controllen;
+ int error, error2, fd2;
+ u_int i;
+
+ if (sock_type == SOCK_STREAM) {
+ if ((fd2 = accept_timeout(fd1)) < 0)
+ return (-2);
+ } else
+ fd2 = fd1;
+
+ error = 0;
+
+ controllen = sizeof(control_un.control);
+
+ for (i = 0; i < 2; ++i) {
+ iov[0].iov_base = buf;
+ iov[0].iov_len = sizeof(buf);
+
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+ msg.msg_control = control_un.control;
+ msg.msg_controllen = controllen;
+ msg.msg_flags = 0;
+
+ controllen = CMSG_SPACE(sizeof(struct cmsgcred));
+
+ if (recvmsg_timeout(fd2, &msg, sizeof(buf)) < 0)
+ goto failed;
+
+ if (msg.msg_flags & MSG_CTRUNC) {
+ logmsgx("#%u control data was truncated, MSG_CTRUNC flag is on",
+ i);
+ goto next_error;
+ }
+
+ if (msg.msg_controllen < sizeof(struct cmsghdr)) {
+ logmsgx("#%u msg_controllen %u < %lu (sizeof(struct cmsghdr))",
+ i, (u_int)msg.msg_controllen, (u_long)sizeof(struct cmsghdr));
+ goto next_error;
+ }
+
+ if ((cmptr = CMSG_FIRSTHDR(&msg)) == NULL) {
+ logmsgx("CMSG_FIRSTHDR is NULL");
+ goto next_error;
+ }
+
+ dbgmsg(("#%u msg_controllen = %u, cmsg_len = %u", i,
+ (u_int)msg.msg_controllen, (u_int)cmptr->cmsg_len));
+
+ if (cmptr->cmsg_level != SOL_SOCKET) {
+ logmsgx("#%u cmsg_level %d != SOL_SOCKET", i,
+ cmptr->cmsg_level);
+ goto next_error;
+ }
+
+ if (cmptr->cmsg_type != SCM_CREDS) {
+ logmsgx("#%u cmsg_type %d != SCM_CREDS", i,
+ cmptr->cmsg_type);
+ goto next_error;
+ }
+
+ if (cmptr->cmsg_len != CMSG_LEN(sizeof(struct cmsgcred))) {
+ logmsgx("#%u cmsg_len %u != %lu (CMSG_LEN(sizeof(struct cmsgcred))",
+ i, (u_int)cmptr->cmsg_len, (u_long)CMSG_LEN(sizeof(struct cmsgcred)));
+ goto next_error;
+ }
+
+ cmcredptr = (const struct cmsgcred *)CMSG_DATA(cmptr);
+
+ error2 = 0;
+ if (cmcredptr->cmcred_pid != client_pid) {
+ logmsgx("#%u cmcred_pid %ld != %ld (PID of client)",
+ i, (long)cmcredptr->cmcred_pid, (long)client_pid);
+ error2 = 1;
+ }
+ if (cmcredptr->cmcred_uid != my_uid) {
+ logmsgx("#%u cmcred_uid %lu != %lu (UID of current process)",
+ i, (u_long)cmcredptr->cmcred_uid, (u_long)my_uid);
+ error2 = 1;
+ }
+ if (cmcredptr->cmcred_euid != my_euid) {
+ logmsgx("#%u cmcred_euid %lu != %lu (EUID of current process)",
+ i, (u_long)cmcredptr->cmcred_euid, (u_long)my_euid);
+ error2 = 1;
+ }
+ if (cmcredptr->cmcred_gid != my_gid) {
+ logmsgx("#%u cmcred_gid %lu != %lu (GID of current process)",
+ i, (u_long)cmcredptr->cmcred_gid, (u_long)my_gid);
+ error2 = 1;
+ }
+ if (cmcredptr->cmcred_ngroups == 0) {
+ logmsgx("#%u cmcred_ngroups = 0, this is wrong", i);
+ error2 = 1;
+ } else {
+ if (cmcredptr->cmcred_ngroups > NGROUPS_MAX) {
+ logmsgx("#%u cmcred_ngroups %d > %u (NGROUPS_MAX)",
+ i, cmcredptr->cmcred_ngroups, NGROUPS_MAX);
+ error2 = 1;
+ } else if (cmcredptr->cmcred_ngroups < 0) {
+ logmsgx("#%u cmcred_ngroups %d < 0",
+ i, cmcredptr->cmcred_ngroups);
+ error2 = 1;
+ } else {
+ dbgmsg(("#%u cmcred_ngroups = %d", i,
+ cmcredptr->cmcred_ngroups));
+ if (cmcredptr->cmcred_groups[0] != my_egid) {
+ logmsgx("#%u cmcred_groups[0] %lu != %lu (EGID of current process)",
+ i, (u_long)cmcredptr->cmcred_groups[0], (u_long)my_egid);
+ error2 = 1;
+ }
+ if (check_groups(cmcredptr->cmcred_groups + 1, cmcredptr->cmcred_ngroups - 1) < 0) {
+ logmsgx("#%u cmcred_groups has wrong GIDs", i);
+ error2 = 1;
+ }
+ }
+ }
+
+ if (error2)
+ goto next_error;
+
+ if ((cmptr = CMSG_NXTHDR(&msg, cmptr)) != NULL) {
+ logmsgx("#%u control data has extra header", i);
+ goto next_error;
+ }
+
+ continue;
+next_error:
+ error = -1;
+ }
+
+ if (sock_type == SOCK_STREAM)
+ if (close(fd2) < 0) {
+ logmsg("close");
+ return (-2);
+ }
+ return (error);
+
+failed:
+ if (sock_type == SOCK_STREAM)
+ if (close(fd2) < 0)
+ logmsg("close");
+ return (-2);
+}
+
+static int
+t_cmsgcred(void)
+{
+ int error, fd;
+
+ if ((fd = create_server_socket()) < 0)
+ return (-2);
+
+ if (sock_type == SOCK_STREAM)
+ if (listen(fd, LISTENQ) < 0) {
+ logmsg("listen");
+ goto failed;
+ }
+
+ if ((client_pid = fork()) == (pid_t)-1) {
+ logmsg("fork");
+ goto failed;
+ }
+
+ if (client_pid == 0) {
+ myname = "CLIENT";
+ if (close_socket((const char *)NULL, fd) < 0)
+ _exit(1);
+ t_cmsgcred_client(2);
+ }
+
+ if ((error = t_cmsgcred_server(fd)) == -2) {
+ (void)wait_client();
+ goto failed;
+ }
+
+ if (wait_client() < 0)
+ goto failed;
+
+ if (close_socket(serv_sock_path, fd) < 0) {
+ logmsgx("close_socket failed");
+ return (-2);
+ }
+ return (error);
+
+failed:
+ if (close_socket(serv_sock_path, fd) < 0)
+ logmsgx("close_socket failed");
+ return (-2);
+}
+
+/*
+ * Send two messages with data to server and exit.
+ */
+static void
+t_sockcred_client(int type)
+{
+ struct msghdr msg;
+ struct iovec iov[1];
+ int fd;
+ u_int i;
+
+ assert(type == 0 || type == 1);
+
+ if ((fd = create_unbound_socket()) < 0)
+ goto failed;
+
+ if (connect_server(fd) < 0)
+ goto failed_close;
+
+ if (type == 1)
+ if (sync_recv(fd) < 0)
+ goto failed_close;
+
+ iov[0].iov_base = ipc_message;
+ iov[0].iov_len = IPC_MESSAGE_SIZE;
+
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+ msg.msg_control = NULL;
+ msg.msg_controllen = 0;
+ msg.msg_flags = 0;
+
+ for (i = 0; i < 2; ++i)
+ if (sendmsg_timeout(fd, &msg, IPC_MESSAGE_SIZE) < 0)
+ goto failed_close;
+
+ if (close_socket((const char *)NULL, fd) < 0)
+ goto failed;
+
+ _exit(0);
+
+failed_close:
+ (void)close_socket((const char *)NULL, fd);
+
+failed:
+ _exit(1);
+}
+
+/*
+ * Receive one message with data and control message with SCM_CREDS
+ * type followed by struct sockcred{} and if n is not equal 1, then
+ * receive another one message with data. fd1 is a listen socket for
+ * stream sockets or simply socket for datagram sockets. If type is
+ * 1, then set LOCAL_CREDS option for accepted stream socket.
+ */
+static int
+t_sockcred_server(int type, int fd1, u_int n)
+{
+ char buf[IPC_MESSAGE_SIZE];
+ union {
+ struct cmsghdr cm;
+ char control[CMSG_SPACE(SOCKCREDSIZE(NGROUPS_MAX)) + EXTRA_CMSG_SPACE];
+ } control_un;
+ struct msghdr msg;
+ struct iovec iov[1];
+ struct cmsghdr *cmptr;
+ const struct sockcred *sockcred;
+ int error, error2, fd2, optval;
+ u_int i;
+
+ assert(n == 1 || n == 2);
+ assert(type == 0 || type == 1);
+
+ if (sock_type == SOCK_STREAM) {
+ if ((fd2 = accept_timeout(fd1)) < 0)
+ return (-2);
+ if (type == 1) {
+ optval = 1;
+ if (setsockopt(fd2, 0, LOCAL_CREDS, &optval, sizeof optval) < 0) {
+ logmsg("setsockopt(LOCAL_CREDS) for accepted socket");
+ if (errno == ENOPROTOOPT) {
+ error = -1;
+ goto done_close;
+ }
+ goto failed;
+ }
+ if (sync_send(fd2) < 0)
+ goto failed;
+ }
+ } else
+ fd2 = fd1;
+
+ error = 0;
+
+ for (i = 0; i < n; ++i) {
+ iov[0].iov_base = buf;
+ iov[0].iov_len = sizeof buf;
+
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+ msg.msg_control = control_un.control;
+ msg.msg_controllen = sizeof control_un.control;
+ msg.msg_flags = 0;
+
+ if (recvmsg_timeout(fd2, &msg, sizeof buf) < 0)
+ goto failed;
+
+ if (msg.msg_flags & MSG_CTRUNC) {
+ logmsgx("control data was truncated, MSG_CTRUNC flag is on");
+ goto next_error;
+ }
+
+ if (i != 0 && sock_type == SOCK_STREAM) {
+ if (msg.msg_controllen != 0) {
+ logmsgx("second message has control data, this is wrong for stream sockets");
+ goto next_error;
+ }
+ dbgmsg(("#%u msg_controllen = %u", i,
+ (u_int)msg.msg_controllen));
+ continue;
+ }
+
+ if (msg.msg_controllen < sizeof(struct cmsghdr)) {
+ logmsgx("#%u msg_controllen %u < %lu (sizeof(struct cmsghdr))",
+ i, (u_int)msg.msg_controllen, (u_long)sizeof(struct cmsghdr));
+ goto next_error;
+ }
+
+ if ((cmptr = CMSG_FIRSTHDR(&msg)) == NULL) {
+ logmsgx("CMSG_FIRSTHDR is NULL");
+ goto next_error;
+ }
+
+ dbgmsg(("#%u msg_controllen = %u, cmsg_len = %u", i,
+ (u_int)msg.msg_controllen, (u_int)cmptr->cmsg_len));
+
+ if (cmptr->cmsg_level != SOL_SOCKET) {
+ logmsgx("#%u cmsg_level %d != SOL_SOCKET", i,
+ cmptr->cmsg_level);
+ goto next_error;
+ }
+
+ if (cmptr->cmsg_type != SCM_CREDS) {
+ logmsgx("#%u cmsg_type %d != SCM_CREDS", i,
+ cmptr->cmsg_type);
+ goto next_error;
+ }
+
+ if (cmptr->cmsg_len < CMSG_LEN(SOCKCREDSIZE(1))) {
+ logmsgx("#%u cmsg_len %u != %lu (CMSG_LEN(SOCKCREDSIZE(1)))",
+ i, (u_int)cmptr->cmsg_len, (u_long)CMSG_LEN(SOCKCREDSIZE(1)));
+ goto next_error;
+ }
+
+ sockcred = (const struct sockcred *)CMSG_DATA(cmptr);
+
+ error2 = 0;
+ if (sockcred->sc_uid != my_uid) {
+ logmsgx("#%u sc_uid %lu != %lu (UID of current process)",
+ i, (u_long)sockcred->sc_uid, (u_long)my_uid);
+ error2 = 1;
+ }
+ if (sockcred->sc_euid != my_euid) {
+ logmsgx("#%u sc_euid %lu != %lu (EUID of current process)",
+ i, (u_long)sockcred->sc_euid, (u_long)my_euid);
+ error2 = 1;
+ }
+ if (sockcred->sc_gid != my_gid) {
+ logmsgx("#%u sc_gid %lu != %lu (GID of current process)",
+ i, (u_long)sockcred->sc_gid, (u_long)my_gid);
+ error2 = 1;
+ }
+ if (sockcred->sc_egid != my_egid) {
+ logmsgx("#%u sc_egid %lu != %lu (EGID of current process)",
+ i, (u_long)sockcred->sc_gid, (u_long)my_egid);
+ error2 = 1;
+ }
+ if (sockcred->sc_ngroups > NGROUPS_MAX) {
+ logmsgx("#%u sc_ngroups %d > %u (NGROUPS_MAX)",
+ i, sockcred->sc_ngroups, NGROUPS_MAX);
+ error2 = 1;
+ } else if (sockcred->sc_ngroups < 0) {
+ logmsgx("#%u sc_ngroups %d < 0",
+ i, sockcred->sc_ngroups);
+ error2 = 1;
+ } else {
+ dbgmsg(("#%u sc_ngroups = %d", i, sockcred->sc_ngroups));
+ if (check_groups(sockcred->sc_groups, sockcred->sc_ngroups) < 0) {
+ logmsgx("#%u sc_groups has wrong GIDs", i);
+ error2 = 1;
+ }
+ }
+
+ if (error2)
+ goto next_error;
+
+ if ((cmptr = CMSG_NXTHDR(&msg, cmptr)) != NULL) {
+ logmsgx("#%u control data has extra header, this is wrong",
+ i);
+ goto next_error;
+ }
+
+ continue;
+next_error:
+ error = -1;
+ }
+
+done_close:
+ if (sock_type == SOCK_STREAM)
+ if (close(fd2) < 0) {
+ logmsg("close");
+ return (-2);
+ }
+ return (error);
+
+failed:
+ if (sock_type == SOCK_STREAM)
+ if (close(fd2) < 0)
+ logmsg("close");
+ return (-2);
+}
+
+static int
+t_sockcred(int type)
+{
+ int error, fd, optval;
+
+ assert(type == 0 || type == 1);
+
+ if ((fd = create_server_socket()) < 0)
+ return (-2);
+
+ if (sock_type == SOCK_STREAM)
+ if (listen(fd, LISTENQ) < 0) {
+ logmsg("listen");
+ goto failed;
+ }
+
+ if (type == 0) {
+ optval = 1;
+ if (setsockopt(fd, 0, LOCAL_CREDS, &optval, sizeof optval) < 0) {
+ logmsg("setsockopt(LOCAL_CREDS) for %s socket",
+ sock_type == SOCK_STREAM ? "stream listening" : "datagram");
+ if (errno == ENOPROTOOPT) {
+ error = -1;
+ goto done_close;
+ }
+ goto failed;
+ }
+ }
+
+ if ((client_pid = fork()) == (pid_t)-1) {
+ logmsg("fork");
+ goto failed;
+ }
+
+ if (client_pid == 0) {
+ myname = "CLIENT";
+ if (close_socket((const char *)NULL, fd) < 0)
+ _exit(1);
+ t_sockcred_client(type);
+ }
+
+ if ((error = t_sockcred_server(type, fd, 2)) == -2) {
+ (void)wait_client();
+ goto failed;
+ }
+
+ if (wait_client() < 0)
+ goto failed;
+
+done_close:
+ if (close_socket(serv_sock_path, fd) < 0) {
+ logmsgx("close_socket failed");
+ return (-2);
+ }
+ return (error);
+
+failed:
+ if (close_socket(serv_sock_path, fd) < 0)
+ logmsgx("close_socket failed");
+ return (-2);
+}
+
+static int
+t_sockcred_stream1(void)
+{
+ return (t_sockcred(0));
+}
+
+static int
+t_sockcred_stream2(void)
+{
+ return (t_sockcred(1));
+}
+
+static int
+t_sockcred_dgram(void)
+{
+ return (t_sockcred(0));
+}
+
+static int
+t_cmsgcred_sockcred(void)
+{
+ int error, fd, optval;
+
+ if ((fd = create_server_socket()) < 0)
+ return (-2);
+
+ if (sock_type == SOCK_STREAM)
+ if (listen(fd, LISTENQ) < 0) {
+ logmsg("listen");
+ goto failed;
+ }
+
+ optval = 1;
+ if (setsockopt(fd, 0, LOCAL_CREDS, &optval, sizeof optval) < 0) {
+ logmsg("setsockopt(LOCAL_CREDS) for %s socket",
+ sock_type == SOCK_STREAM ? "stream listening" : "datagram");
+ if (errno == ENOPROTOOPT) {
+ error = -1;
+ goto done_close;
+ }
+ goto failed;
+ }
+
+ if ((client_pid = fork()) == (pid_t)-1) {
+ logmsg("fork");
+ goto failed;
+ }
+
+ if (client_pid == 0) {
+ myname = "CLIENT";
+ if (close_socket((const char *)NULL, fd) < 0)
+ _exit(1);
+ t_cmsgcred_client(1);
+ }
+
+ if ((error = t_sockcred_server(0, fd, 1)) == -2) {
+ (void)wait_client();
+ goto failed;
+ }
+
+ if (wait_client() < 0)
+ goto failed;
+
+done_close:
+ if (close_socket(serv_sock_path, fd) < 0) {
+ logmsgx("close_socket failed");
+ return (-2);
+ }
+ return (error);
+
+failed:
+ if (close_socket(serv_sock_path, fd) < 0)
+ logmsgx("close_socket failed");
+ return (-2);
+}
+
+/*
+ * Send one message with data and control message with SCM_TIMESTAMP
+ * type to server and exit.
+ */
+static void
+t_timestamp_client(void)
+{
+ union {
+ struct cmsghdr cm;
+ char control[CMSG_SPACE(sizeof(struct timeval))];
+ } control_un;
+ struct msghdr msg;
+ struct iovec iov[1];
+ struct cmsghdr *cmptr;
+ int fd;
+
+ if ((fd = create_unbound_socket()) < 0)
+ goto failed;
+
+ if (connect_server(fd) < 0)
+ goto failed_close;
+
+ iov[0].iov_base = ipc_message;
+ iov[0].iov_len = IPC_MESSAGE_SIZE;
+
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+ msg.msg_control = control_un.control;
+ msg.msg_controllen = no_control_data ?
+ sizeof(struct cmsghdr) :sizeof control_un.control;
+ msg.msg_flags = 0;
+
+ cmptr = CMSG_FIRSTHDR(&msg);
+ cmptr->cmsg_len = CMSG_LEN(no_control_data ?
+ 0 : sizeof(struct timeval));
+ cmptr->cmsg_level = SOL_SOCKET;
+ cmptr->cmsg_type = SCM_TIMESTAMP;
+
+ dbgmsg(("msg_controllen = %u, cmsg_len = %u",
+ (u_int)msg.msg_controllen, (u_int)cmptr->cmsg_len));
+
+ if (sendmsg_timeout(fd, &msg, IPC_MESSAGE_SIZE) < 0)
+ goto failed_close;
+
+ if (close_socket((const char *)NULL, fd) < 0)
+ goto failed;
+
+ _exit(0);
+
+failed_close:
+ (void)close_socket((const char *)NULL, fd);
+
+failed:
+ _exit(1);
+}
+
+/*
+ * Receive one message with data and control message with SCM_TIMESTAMP
+ * type followed by struct timeval{} from client.
+ */
+static int
+t_timestamp_server(int fd1)
+{
+ union {
+ struct cmsghdr cm;
+ char control[CMSG_SPACE(sizeof(struct timeval)) + EXTRA_CMSG_SPACE];
+ } control_un;
+ char buf[IPC_MESSAGE_SIZE];
+ int error, fd2;
+ struct msghdr msg;
+ struct iovec iov[1];
+ struct cmsghdr *cmptr;
+ const struct timeval *timeval;
+
+ if (sock_type == SOCK_STREAM) {
+ if ((fd2 = accept_timeout(fd1)) < 0)
+ return (-2);
+ } else
+ fd2 = fd1;
+
+ iov[0].iov_base = buf;
+ iov[0].iov_len = sizeof buf;
+
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_iov = iov;
+ msg.msg_iovlen = 1;
+ msg.msg_control = control_un.control;
+ msg.msg_controllen = sizeof control_un.control;;
+ msg.msg_flags = 0;
+
+ if (recvmsg_timeout(fd2, &msg, sizeof buf) < 0)
+ goto failed;
+
+ error = -1;
+
+ if (msg.msg_flags & MSG_CTRUNC) {
+ logmsgx("control data was truncated, MSG_CTRUNC flag is on");
+ goto done;
+ }
+
+ if (msg.msg_controllen < sizeof(struct cmsghdr)) {
+ logmsgx("msg_controllen %u < %lu (sizeof(struct cmsghdr))",
+ (u_int)msg.msg_controllen, (u_long)sizeof(struct cmsghdr));
+ goto done;
+ }
+
+ if ((cmptr = CMSG_FIRSTHDR(&msg)) == NULL) {
+ logmsgx("CMSG_FIRSTHDR is NULL");
+ goto done;
+ }
+
+ dbgmsg(("msg_controllen = %u, cmsg_len = %u",
+ (u_int)msg.msg_controllen, (u_int)cmptr->cmsg_len));
+
+ if (cmptr->cmsg_level != SOL_SOCKET) {
+ logmsgx("cmsg_level %d != SOL_SOCKET", cmptr->cmsg_level);
+ goto done;
+ }
+
+ if (cmptr->cmsg_type != SCM_TIMESTAMP) {
+ logmsgx("cmsg_type %d != SCM_TIMESTAMP", cmptr->cmsg_type);
+ goto done;
+ }
+
+ if (cmptr->cmsg_len != CMSG_LEN(sizeof(struct timeval))) {
+ logmsgx("cmsg_len %u != %lu (CMSG_LEN(sizeof(struct timeval))",
+ (u_int)cmptr->cmsg_len, (u_long)CMSG_LEN(sizeof(struct timeval)));
+ goto done;
+ }
+
+ timeval = (const struct timeval *)CMSG_DATA(cmptr);
+
+ dbgmsg(("timeval tv_sec %jd, tv_usec %jd",
+ (intmax_t)timeval->tv_sec, (intmax_t)timeval->tv_usec));
+
+ if ((cmptr = CMSG_NXTHDR(&msg, cmptr)) != NULL) {
+ logmsgx("control data has extra header");
+ goto done;
+ }
+
+ error = 0;
+
+done:
+ if (sock_type == SOCK_STREAM)
+ if (close(fd2) < 0) {
+ logmsg("close");
+ return (-2);
+ }
+ return (error);
+
+failed:
+ if (sock_type == SOCK_STREAM)
+ if (close(fd2) < 0)
+ logmsg("close");
+ return (-2);
+}
+
+static int
+t_timestamp(void)
+{
+ int error, fd;
+
+ if ((fd = create_server_socket()) < 0)
+ return (-2);
+
+ if (sock_type == SOCK_STREAM)
+ if (listen(fd, LISTENQ) < 0) {
+ logmsg("listen");
+ goto failed;
+ }
+
+ if ((client_pid = fork()) == (pid_t)-1) {
+ logmsg("fork");
+ goto failed;
+ }
+
+ if (client_pid == 0) {
+ myname = "CLIENT";
+ if (close_socket((const char *)NULL, fd) < 0)
+ _exit(1);
+ t_timestamp_client();
+ }
+
+ if ((error = t_timestamp_server(fd)) == -2) {
+ (void)wait_client();
+ goto failed;
+ }
+
+ if (wait_client() < 0)
+ goto failed;
+
+ if (close_socket(serv_sock_path, fd) < 0) {
+ logmsgx("close_socket failed");
+ return (-2);
+ }
+ return (error);
+
+failed:
+ if (close_socket(serv_sock_path, fd) < 0)
+ logmsgx("close_socket failed");
+ return (-2);
+}
diff --git a/tools/regression/sockets/unix_cmsg/unix_cmsg.t b/tools/regression/sockets/unix_cmsg/unix_cmsg.t
new file mode 100644
index 0000000..c8dea15
--- /dev/null
+++ b/tools/regression/sockets/unix_cmsg/unix_cmsg.t
@@ -0,0 +1,57 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+cmd="./`basename $0 .t`"
+
+make ${cmd} >/dev/null 2>&1
+
+IFS=
+n=0
+
+run()
+{
+ result=`${cmd} -t $2 $3 $4 2>&1`
+ if [ $? -eq 0 ]; then
+ echo -n "ok $1"
+ else
+ echo -n "not ok $1"
+ fi
+ echo " -" $5
+ echo ${result} | grep -E "SERVER|CLIENT" | while read line; do
+ echo "# ${line}"
+ done
+}
+
+echo "1..15"
+
+for desc in \
+ "Sending, receiving cmsgcred" \
+ "Receiving sockcred (listening socket has LOCAL_CREDS) # TODO" \
+ "Receiving sockcred (accepted socket has LOCAL_CREDS) # TODO" \
+ "Sending cmsgcred, receiving sockcred # TODO" \
+ "Sending, receiving timestamp"
+do
+ n=`expr ${n} + 1`
+ run ${n} stream "" ${n} "STREAM ${desc}"
+done
+
+i=0
+for desc in \
+ "Sending, receiving cmsgcred" \
+ "Receiving sockcred # TODO" \
+ "Sending cmsgcred, receiving sockcred # TODO" \
+ "Sending, receiving timestamp"
+do
+ i=`expr ${i} + 1`
+ n=`expr ${n} + 1`
+ run ${n} dgram "" ${i} "DGRAM ${desc}"
+done
+
+run 10 stream -z 1 "STREAM Sending, receiving cmsgcred (no control data)"
+run 11 stream -z 4 "STREAM Sending cmsgcred, receiving sockcred (no control data) # TODO"
+run 12 stream -z 5 "STREAM Sending, receiving timestamp (no control data)"
+
+run 13 dgram -z 1 "DGRAM Sending, receiving cmsgcred (no control data)"
+run 14 dgram -z 3 "DGRAM Sending cmsgcred, receiving sockcred (no control data) # TODO"
+run 15 dgram -z 4 "DGRAM Sending, receiving timestamp (no control data)"
diff --git a/tools/regression/sockets/unix_passfd/Makefile b/tools/regression/sockets/unix_passfd/Makefile
new file mode 100644
index 0000000..8d2ddb9
--- /dev/null
+++ b/tools/regression/sockets/unix_passfd/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= unix_passfd
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/unix_passfd/unix_passfd.c b/tools/regression/sockets/unix_passfd/unix_passfd.c
new file mode 100644
index 0000000..d76b25a
--- /dev/null
+++ b/tools/regression/sockets/unix_passfd/unix_passfd.c
@@ -0,0 +1,307 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+
+#include <err.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * UNIX domain sockets allow file descriptors to be passed via "ancillary
+ * data", or control messages. This regression test is intended to exercise
+ * this facility, both performing some basic tests that it operates, and also
+ * causing some kernel edge cases to execute, such as garbage collection when
+ * there are cyclic file descriptor references. Right now we test only with
+ * stream sockets, but ideally we'd also test with datagram sockets.
+ */
+
+static void
+domainsocketpair(const char *test, int *fdp)
+{
+
+ if (socketpair(PF_UNIX, SOCK_STREAM, 0, fdp) < 0)
+ err(-1, "%s: socketpair(PF_UNIX, SOCK_STREAM)", test);
+}
+
+static void
+closesocketpair(int *fdp)
+{
+
+ close(fdp[0]);
+ close(fdp[1]);
+}
+
+static void
+tempfile(const char *test, int *fdp)
+{
+ char path[PATH_MAX];
+ int fd;
+
+ snprintf(path, PATH_MAX, "/tmp/unix_passfd.XXXXXXXXXXXXXXX");
+ fd = mkstemp(path);
+ if (fd < 0)
+ err(-1, "%s: mkstemp(%s)", test, path);
+ (void)unlink(path);
+ *fdp = fd;
+}
+
+static void
+dofstat(const char *test, int fd, struct stat *sb)
+{
+
+ if (fstat(fd, sb) < 0)
+ err(-1, "%s: fstat", test);
+}
+
+static void
+samefile(const char *test, struct stat *sb1, struct stat *sb2)
+{
+
+ if (sb1->st_dev != sb2->st_dev)
+ err(-1, "%s: samefile: different device", test);
+ if (sb1->st_ino != sb2->st_ino)
+ err(-1, "%s: samefile: different inode", test);
+}
+
+static void
+sendfd(const char *test, int sockfd, int sendfd)
+{
+ struct iovec iovec;
+ char ch;
+
+ struct {
+ struct cmsghdr cmsghdr;
+ int fd;
+ } message;
+ struct msghdr msghdr;
+ ssize_t len;
+
+ bzero(&msghdr, sizeof(msghdr));
+ bzero(&message, sizeof(message));
+ ch = 0;
+
+ msghdr.msg_control = &message;
+ msghdr.msg_controllen = sizeof(message);
+
+ iovec.iov_base = &ch;
+ iovec.iov_len = sizeof(ch);
+
+ msghdr.msg_iov = &iovec;
+ msghdr.msg_iovlen = 1;
+
+ message.cmsghdr.cmsg_len = sizeof(message);
+ message.cmsghdr.cmsg_level = SOL_SOCKET;
+ message.cmsghdr.cmsg_type = SCM_RIGHTS;
+ message.fd = sendfd;
+
+ len = sendmsg(sockfd, &msghdr, 0);
+ if (len < 0)
+ err(-1, "%s: sendmsg", test);
+ if (len != sizeof(ch))
+ errx(-1, "%s: sendmsg: %d bytes sent", test, len);
+}
+
+static void
+recvfd(const char *test, int sockfd, int *recvfd)
+{
+ struct {
+ struct cmsghdr cmsghdr;
+ int fd;
+ } message;
+ struct msghdr msghdr;
+ struct iovec iovec;
+ ssize_t len;
+ char ch;
+
+ bzero(&msghdr, sizeof(msghdr));
+ bzero(&message, sizeof(message));
+ ch = 0;
+
+ msghdr.msg_control = &message;
+ msghdr.msg_controllen = sizeof(message);
+
+ iovec.iov_base = &ch;
+ iovec.iov_len = sizeof(ch);
+
+ msghdr.msg_iov = &iovec;
+ msghdr.msg_iovlen = 1;
+
+ iovec.iov_len = sizeof(ch);
+
+ msghdr.msg_iov = &iovec;
+ msghdr.msg_iovlen = 1;
+
+ message.cmsghdr.cmsg_len = sizeof(message);
+ message.cmsghdr.cmsg_level = SOL_SOCKET;
+ message.cmsghdr.cmsg_type = SCM_RIGHTS;
+ message.fd = -1;
+
+ len = recvmsg(sockfd, &msghdr, 0);
+ if (len < 0)
+ err(-1, "%s: recvmsg", test);
+ if (len != sizeof(ch))
+ errx(-1, "%s: recvmsg: %d bytes received", test, len);
+ if (message.fd == -1)
+ errx(-1, "%s: recvmsg: received fd -1", test);
+ *recvfd = message.fd;
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct stat putfd_1_stat, putfd_2_stat, getfd_1_stat, getfd_2_stat;
+ int fd[2], putfd_1, putfd_2, getfd_1, getfd_2;
+ const char *test;
+
+ /*
+ * First test: put a temporary file into a UNIX domain socket, then
+ * take it out and make sure it's the same file. First time around,
+ * don't close the reference after sending.
+ */
+ test = "test1-simplesendfd";
+ printf("beginning %s\n", test);
+
+ domainsocketpair(test, fd);
+ tempfile(test, &putfd_1);
+ dofstat(test, putfd_1, &putfd_1_stat);
+ sendfd(test, fd[0], putfd_1);
+ recvfd(test, fd[1], &getfd_1);
+ dofstat(test, getfd_1, &getfd_1_stat);
+ samefile(test, &putfd_1_stat, &getfd_1_stat);
+ close(putfd_1);
+ close(getfd_1);
+ closesocketpair(fd);
+
+ printf("%s passed\n", test);
+
+ /*
+ * Second test: same as first, only close the file reference after
+ * sending, so that the only reference is the descriptor in the UNIX
+ * domain socket buffer.
+ */
+ test = "test2-sendandclose";
+ printf("beginning %s\n", test);
+
+ domainsocketpair(test, fd);
+ tempfile(test, &putfd_1);
+ dofstat(test, putfd_1, &putfd_1_stat);
+ sendfd(test, fd[0], putfd_1);
+ close(putfd_1);
+ recvfd(test, fd[1], &getfd_1);
+ dofstat(test, getfd_1, &getfd_1_stat);
+ samefile(test, &putfd_1_stat, &getfd_1_stat);
+ close(getfd_1);
+ closesocketpair(fd);
+
+ printf("%s passed\n", test);
+
+ /*
+ * Third test: put a temporary file into a UNIX domain socket, then
+ * close both endpoints causing garbage collection to kick off.
+ */
+ test = "test3-sendandcancel";
+ printf("beginning %s\n", test);
+
+ domainsocketpair(test, fd);
+ tempfile(test, &putfd_1);
+ sendfd(test, fd[0], putfd_1);
+ close(putfd_1);
+ closesocketpair(fd);
+
+ printf("%s passed\n", test);
+
+ /*
+ * Send two files. Then receive them. Make sure they are returned
+ * in the right order, and both get there.
+ */
+
+ test = "test4-twofile";
+ printf("beginning %s\n", test);
+
+ domainsocketpair(test, fd);
+ tempfile(test, &putfd_1);
+ tempfile(test, &putfd_2);
+ dofstat(test, putfd_1, &putfd_1_stat);
+ dofstat(test, putfd_2, &putfd_2_stat);
+ sendfd(test, fd[0], putfd_1);
+ sendfd(test, fd[0], putfd_2);
+ close(putfd_1);
+ close(putfd_2);
+ recvfd(test, fd[1], &getfd_1);
+ recvfd(test, fd[1], &getfd_2);
+ dofstat(test, getfd_1, &getfd_1_stat);
+ dofstat(test, getfd_2, &getfd_2_stat);
+ samefile(test, &putfd_1_stat, &getfd_1_stat);
+ samefile(test, &putfd_2_stat, &getfd_2_stat);
+ close(getfd_1);
+ close(getfd_2);
+ closesocketpair(fd);
+
+ printf("%s passed\n", test);
+
+ /*
+ * Big bundling test. Send an endpoint of the UNIX domain socket
+ * over itself, closing the door behind it.
+ */
+
+ test = "test5-bundle";
+ printf("beginning %s\n", test);
+
+ domainsocketpair(test, fd);
+
+ sendfd(test, fd[0], fd[0]);
+ close(fd[0]);
+ recvfd(test, fd[1], &getfd_1);
+ close(getfd_1);
+ close(fd[1]);
+
+ printf("%s passed\n", test);
+
+ /*
+ * Big bundling test part two: Send an endpoint of the UNIX domain
+ * socket over itself, close the door behind it, and never remove it
+ * from the other end.
+ */
+
+ test = "test6-bundlecancel";
+ printf("beginning %s\n", test);
+
+ domainsocketpair(test, fd);
+ sendfd(test, fd[0], fd[0]);
+ sendfd(test, fd[1], fd[0]);
+ closesocketpair(fd);
+
+ printf("%s passed\n", test);
+
+ return (0);
+}
diff --git a/tools/regression/sockets/unix_sendtorace/Makefile b/tools/regression/sockets/unix_sendtorace/Makefile
new file mode 100644
index 0000000..6c92f24
--- /dev/null
+++ b/tools/regression/sockets/unix_sendtorace/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= unix_sendtorace
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/unix_sendtorace/unix_sendtorace.c b/tools/regression/sockets/unix_sendtorace/unix_sendtorace.c
new file mode 100644
index 0000000..2445b81
--- /dev/null
+++ b/tools/regression/sockets/unix_sendtorace/unix_sendtorace.c
@@ -0,0 +1,212 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Attempts to exercise UNIX domain socket races relating to the non-atomic
+ * connect-and-send properties of sendto(). As the result of such a race is
+ * a kernel panic, this test simply completes or doesn't.
+ *
+ * XXX: Despite implementing support for sendto() on stream sockets with
+ * implied connect, the appropriate flag isn't set in the FreeBSD kernel so
+ * it does not work. For now, don't call the stream test.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#include <err.h>
+#include <signal.h>
+#include <string.h>
+#include <unistd.h>
+
+#define PATH "/tmp/123"
+#define ITERATIONS 1000000
+
+static void
+stream_server(int listenfd)
+{
+ int acceptfd;
+
+ while (1) {
+ acceptfd = accept(listenfd, NULL, NULL);
+ if (acceptfd < 0) {
+ warn("stream_server: accept");
+ continue;
+ }
+ sleep(1);
+ close(acceptfd);
+ }
+}
+
+static void
+stream_client(void)
+{
+ struct sockaddr_un sun;
+ ssize_t len;
+ char c = 0;
+ int fd, i;
+
+ bzero(&sun, sizeof(sun));
+ sun.sun_len = sizeof(sun);
+ sun.sun_family = AF_UNIX;
+ strcpy(sun.sun_path, PATH);
+ for (i = 0; i < ITERATIONS; i++) {
+ fd = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (fd < 0) {
+ warn("stream_client: socket");
+ return;
+ }
+ len = sendto(fd, &c, sizeof(c), 0, (struct sockaddr *)&sun,
+ sizeof(sun));
+ if (len < 0)
+ warn("stream_client: sendto");
+ close(fd);
+ }
+}
+
+static void
+stream_test(void)
+{
+ struct sockaddr_un sun;
+ pid_t childpid;
+ int listenfd;
+
+ listenfd = socket(PF_UNIX, SOCK_STREAM, 0);
+ if (listenfd < 0)
+ err(-1, "stream_test: socket");
+
+ bzero(&sun, sizeof(sun));
+ sun.sun_len = sizeof(sun);
+ sun.sun_family = AF_UNIX;
+ strcpy(sun.sun_path, PATH);
+
+ if (bind(listenfd, (struct sockaddr *)&sun, sizeof(sun)) < 0)
+ err(-1, "stream_test: bind");
+
+ if (listen(listenfd, -1) < 0)
+ err(-1, "stream_test: listen");
+
+ childpid = fork();
+ if (childpid < 0)
+ err(-1, "stream_test: fork");
+
+ if (childpid != 0) {
+ sleep(1);
+ stream_client();
+ kill(childpid, SIGTERM);
+ sleep(1);
+ } else
+ stream_server(listenfd);
+
+ (void)unlink(PATH);
+}
+
+static void
+datagram_server(int serverfd)
+{
+ ssize_t len;
+ char c;
+
+ while (1) {
+ len = recv(serverfd, &c, sizeof(c), 0);
+ if (len < 0)
+ warn("datagram_server: recv");
+ }
+}
+
+static void
+datagram_client(void)
+{
+ struct sockaddr_un sun;
+ ssize_t len;
+ char c = 0;
+ int fd, i;
+
+ bzero(&sun, sizeof(sun));
+ sun.sun_len = sizeof(sun);
+ sun.sun_family = AF_UNIX;
+ strcpy(sun.sun_path, PATH);
+ for (i = 0; i < ITERATIONS; i++) {
+ fd = socket(PF_UNIX, SOCK_DGRAM, 0);
+ if (fd < 0) {
+ warn("datagram_client: socket");
+ return;
+ }
+ len = sendto(fd, &c, sizeof(c), 0, (struct sockaddr *)&sun,
+ sizeof(sun));
+ if (len < 0)
+ warn("datagram_client: sendto");
+ close(fd);
+ }
+}
+
+static void
+datagram_test(void)
+{
+ struct sockaddr_un sun;
+ pid_t childpid;
+ int serverfd;
+
+ serverfd = socket(PF_UNIX, SOCK_DGRAM, 0);
+ if (serverfd < 0)
+ err(-1, "datagram_test: socket");
+
+ bzero(&sun, sizeof(sun));
+ sun.sun_len = sizeof(sun);
+ sun.sun_family = AF_UNIX;
+ strcpy(sun.sun_path, PATH);
+
+ if (bind(serverfd, (struct sockaddr *)&sun, sizeof(sun)) < 0)
+ err(-1, "datagram_test: bind");
+
+ childpid = fork();
+ if (childpid < 0)
+ err(-1, "datagram_test: fork");
+
+ if (childpid != 0) {
+ sleep(1);
+ datagram_client();
+ kill(childpid, SIGTERM);
+ sleep(1);
+ } else
+ datagram_server(serverfd);
+
+ (void)unlink(PATH);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ (void)unlink(PATH);
+ datagram_test();
+ if (0)
+ stream_test();
+ return (0);
+}
diff --git a/tools/regression/sockets/unix_socket/Makefile b/tools/regression/sockets/unix_socket/Makefile
new file mode 100644
index 0000000..8549efc
--- /dev/null
+++ b/tools/regression/sockets/unix_socket/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= unix_socket
+NO_MAN=
+WARNS?= 3
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/unix_socket/unix_socket.c b/tools/regression/sockets/unix_socket/unix_socket.c
new file mode 100644
index 0000000..24b6baf
--- /dev/null
+++ b/tools/regression/sockets/unix_socket/unix_socket.c
@@ -0,0 +1,84 @@
+/*-
+ * Copyright (c) 2006 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Simple UNIX domain socket regression test: create and tear down various
+ * supported and unsupported socket types.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#include <err.h>
+#include <errno.h>
+#include <unistd.h>
+
+int
+main(int argc, char *argv[])
+{
+ int sock, socks[2];
+
+ sock = socket(PF_LOCAL, SOCK_STREAM, 0);
+ if (sock < 0)
+ err(-1, "socket(PF_LOCAL, SOCK_STREAM, 0)");
+ close(sock);
+
+ sock = socket(PF_LOCAL, SOCK_DGRAM, 0);
+ if (sock < 0)
+ err(-1, "socket(PF_LOCAL, SOCK_DGRAM, 0)");
+ close(sock);
+
+ sock = socket(PF_LOCAL, SOCK_RAW, 0);
+ if (sock >= 0) {
+ close(sock);
+ errx(-1, "socket(PF_LOCAL, SOCK_RAW, 0) returned %d", sock);
+ }
+ if (errno != EPROTONOSUPPORT)
+ err(-1, "socket(PF_LOCAL, SOCK_RAW, 0)");
+
+ if (socketpair(PF_LOCAL, SOCK_STREAM, 0, socks) < 0)
+ err(-1, "socketpair(PF_LOCAL, SOCK_STREAM, 0, socks)");
+ if (socks[0] < 0)
+ errx(-1, "socketpair(PF_LOCAL, SOCK_STREAM, 0, socks) [0] < 0");
+ if (socks[1] < 0)
+ errx(-1, "socketpair(PF_LOCAL, SOCK_STREAM, 0, socks) [1] < 1");
+ close(socks[0]);
+ close(socks[1]);
+
+ if (socketpair(PF_LOCAL, SOCK_DGRAM, 0, socks) < 0)
+ err(-1, "socketpair(PF_LOCAL, SOCK_DGRAM, 0, socks)");
+ if (socks[0] < 0)
+ errx(-1, "socketpair(PF_LOCAL, SOCK_DGRAM, 0, socks) [0] < 0");
+ if (socks[1] < 0)
+ errx(-1, "socketpair(PF_LOCAL, SOCK_DGRAM, 0, socks) [1] < 1");
+ close(socks[0]);
+ close(socks[1]);
+
+ return (0);
+}
diff --git a/tools/regression/sockets/zerosend/Makefile b/tools/regression/sockets/zerosend/Makefile
new file mode 100644
index 0000000..2bd0501
--- /dev/null
+++ b/tools/regression/sockets/zerosend/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= zerosend
+NO_MAN=
+WARNS?= 2
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sockets/zerosend/zerosend.c b/tools/regression/sockets/zerosend/zerosend.c
new file mode 100644
index 0000000..b51155d
--- /dev/null
+++ b/tools/regression/sockets/zerosend/zerosend.c
@@ -0,0 +1,290 @@
+/*-
+ * Copyright (c) 2007 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/select.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+
+#include <netinet/in.h>
+
+#include <arpa/inet.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#define PORT1 10001
+#define PORT2 10002
+
+static void
+try_0send(const char *test, int fd)
+{
+ ssize_t len;
+ char ch;
+
+ ch = 0;
+ len = send(fd, &ch, 0, 0);
+ if (len < 0)
+ err(-1, "%s: try_0send", test);
+ if (len != 0)
+ errx(-1, "%s: try_0send: returned %d", test, len);
+}
+
+static void
+try_0write(const char *test, int fd)
+{
+ ssize_t len;
+ char ch;
+
+ ch = 0;
+ len = write(fd, &ch, 0);
+ if (len < 0)
+ err(-1, "%s: try_0write", test);
+ if (len != 0)
+ errx(-1, "%s: try_0write: returned %d", test, len);
+}
+
+static void
+setup_udp(const char *test, int *fdp)
+{
+ struct sockaddr_in sin;
+ int sock1, sock2;
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+
+ sin.sin_port = htons(PORT1);
+ sock1 = socket(PF_INET, SOCK_DGRAM, 0);
+ if (sock1 < 0)
+ err(-1, "%s: setup_udp: socket", test);
+ if (bind(sock1, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(-1, "%s: setup_udp: bind(%s, %d)", test,
+ inet_ntoa(sin.sin_addr), PORT1);
+ sin.sin_port = htons(PORT2);
+ if (connect(sock1, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(-1, "%s: setup_udp: connect(%s, %d)", test,
+ inet_ntoa(sin.sin_addr), PORT2);
+
+ sock2 = socket(PF_INET, SOCK_DGRAM, 0);
+ if (sock2 < 0)
+ err(-1, "%s: setup_udp: socket", test);
+ if (bind(sock2, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(-1, "%s: setup_udp: bind(%s, %d)", test,
+ inet_ntoa(sin.sin_addr), PORT2);
+ sin.sin_port = htons(PORT1);
+ if (connect(sock2, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(-1, "%s: setup_udp: connect(%s, %d)", test,
+ inet_ntoa(sin.sin_addr), PORT1);
+
+ fdp[0] = sock1;
+ fdp[1] = sock2;
+}
+
+static void
+setup_tcp(const char *test, int *fdp)
+{
+ fd_set writefds, exceptfds;
+ struct sockaddr_in sin;
+ int ret, sock1, sock2, sock3;
+ struct timeval tv;
+
+ bzero(&sin, sizeof(sin));
+ sin.sin_len = sizeof(sin);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+
+ /*
+ * First set up the listen socket.
+ */
+ sin.sin_port = htons(PORT1);
+ sock1 = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock1 < 0)
+ err(-1, "%s: setup_tcp: socket", test);
+ if (bind(sock1, (struct sockaddr *)&sin, sizeof(sin)) < 0)
+ err(-1, "%s: bind(%s, %d)", test, inet_ntoa(sin.sin_addr),
+ PORT1);
+ if (listen(sock1, -1) < 0)
+ err(-1, "%s: listen", test);
+
+ /*
+ * Now connect to it, non-blocking so that we don't deadlock against
+ * ourselves.
+ */
+ sock2 = socket(PF_INET, SOCK_STREAM, 0);
+ if (sock2 < 0)
+ err(-1, "%s: setup_tcp: socket", test);
+ if (fcntl(sock2, F_SETFL, O_NONBLOCK) < 0)
+ err(-1, "%s: setup_tcp: fcntl(O_NONBLOCK)", test);
+ if (connect(sock2, (struct sockaddr *)&sin, sizeof(sin)) < 0 &&
+ errno != EINPROGRESS)
+ err(-1, "%s: setup_tcp: connect(%s, %d)", test,
+ inet_ntoa(sin.sin_addr), PORT1);
+
+ /*
+ * Now pick up the connection after sleeping a moment to make sure
+ * there's been time for some packets to go back and forth.
+ */
+ if (sleep(1) < 0)
+ err(-1, "%s: sleep(1)", test);
+ sock3 = accept(sock1, NULL, NULL);
+ if (sock3 < 0)
+ err(-1, "%s: accept", test);
+ if (sleep(1) < 0)
+ err(-1, "%s: sleep(1)", test);
+
+ FD_ZERO(&writefds);
+ FD_SET(sock2, &writefds);
+ FD_ZERO(&exceptfds);
+ FD_SET(sock2, &exceptfds);
+ tv.tv_sec = 1;
+ tv.tv_usec = 0;
+ ret = select(sock2 + 1, NULL, &writefds, &exceptfds, &tv);
+ if (ret < 0)
+ err(-1, "%s: setup_tcp: select", test);
+ if (FD_ISSET(sock2, &exceptfds))
+ errx(-1, "%s: setup_tcp: select: exception", test);
+ if (!FD_ISSET(sock2, &writefds))
+ errx(-1, "%s: setup_tcp: select: not writable", test);
+
+ close(sock1);
+ fdp[0] = sock2;
+ fdp[1] = sock3;
+}
+
+static void
+setup_udsstream(const char *test, int *fdp)
+{
+
+ if (socketpair(PF_LOCAL, SOCK_STREAM, 0, fdp) < 0)
+ err(-1, "%s: setup_udsstream: socketpair", test);
+}
+
+static void
+setup_udsdgram(const char *test, int *fdp)
+{
+
+ if (socketpair(PF_LOCAL, SOCK_DGRAM, 0, fdp) < 0)
+ err(-1, "%s: setup_udsdgram: socketpair", test);
+}
+
+static void
+setup_pipe(const char *test, int *fdp)
+{
+
+ if (pipe(fdp) < 0)
+ err(-1, "%s: setup_pipe: pipe", test);
+}
+
+static void
+setup_fifo(const char *test, int *fdp)
+{
+ char path[PATH_MAX];
+ int fd1, fd2;
+
+ strcpy(path, "/tmp/0send_fifo.XXXXXXX");
+ if (mktemp(path) == NULL)
+ err(-1, "%s: setup_fifo: mktemp", test);
+
+ if (mkfifo(path, 0600) < 0)
+ err(-1, "%s: setup_fifo: mkfifo(%s)", test, path);
+
+ fd1 = open(path, O_RDONLY | O_NONBLOCK);
+ if (fd1 < 0)
+ err(-1, "%s: setup_fifo: open(%s, O_RDONLY)", test, path);
+
+ fd2 = open(path, O_WRONLY | O_NONBLOCK);
+ if (fd2 < 0)
+ err(-1, "%s: setup_fifo: open(%s, O_WRONLY)", test, path);
+
+ fdp[0] = fd2;
+ fdp[1] = fd1;
+}
+
+static void
+close_both(int *fdp)
+{
+
+ close(fdp[0]);
+ fdp[0] = -1;
+ close(fdp[1]);
+ fdp[1] = -1;
+}
+
+int
+main(int argc, char *argv[])
+{
+ int fd[2];
+
+ setup_udp("udp_0send", fd);
+ try_0send("udp_0send", fd[0]);
+ close_both(fd);
+
+ setup_udp("udp_0write", fd);
+ try_0write("udp_0write", fd[0]);
+ close_both(fd);
+
+ setup_tcp("tcp_0send", fd);
+ try_0send("tcp_0send", fd[0]);
+ close_both(fd);
+
+ setup_tcp("tcp_0write", fd);
+ try_0write("tcp_0write", fd[0]);
+ close_both(fd);
+
+ setup_udsstream("udsstream_0send", fd);
+ try_0send("udsstream_0send", fd[0]);
+ close_both(fd);
+
+ setup_udsstream("udsstream_0write", fd);
+ try_0write("udsstream_0write", fd[0]);
+ close_both(fd);
+
+ setup_udsdgram("udsdgram_0send", fd);
+ try_0send("udsdgram_0send", fd[0]);
+ close_both(fd);
+
+ setup_udsdgram("udsdgram_0write", fd);
+ try_0write("udsdgram_0write", fd[0]);
+ close_both(fd);
+
+ setup_pipe("pipe_0write", fd);
+ try_0write("pipd_0write", fd[0]);
+ close_both(fd);
+
+ setup_fifo("fifo_0write", fd);
+ try_0write("fifo_0write", fd[0]);
+ close_both(fd);
+
+ return (0);
+}
diff --git a/tools/regression/sysvmsg/Makefile b/tools/regression/sysvmsg/Makefile
new file mode 100644
index 0000000..6892abb
--- /dev/null
+++ b/tools/regression/sysvmsg/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# SysV Message Queue Regression Utility
+# Obtained from: $NetBSD: Makefile,v 1.3 2002/03/05 21:56:59 thorpej Exp $
+
+PROG= msgtest
+NO_MAN=
+
+regress:
+ @if ./msgtest ./msgtest; then \
+ echo "PASS"; \
+ else \
+ echo "FAIL"; \
+ fi
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sysvmsg/README b/tools/regression/sysvmsg/README
new file mode 100644
index 0000000..f115b99
--- /dev/null
+++ b/tools/regression/sysvmsg/README
@@ -0,0 +1,13 @@
+$FreeBSD$
+
+SysV IPC Message Queue Regression Utility.
+
+This regression utility will test the SysV Message Queue facility
+in FreeBSD. You can start the test by running ``make regress'', after
+running ``make''.
+
+Obtained from: The NetBSD Foundation.
+Date of port: 13 August 2002
+
+ -- Hiten Pandya
+ -- hiten@uk.FreeBSD.org
diff --git a/tools/regression/sysvmsg/msgtest.c b/tools/regression/sysvmsg/msgtest.c
new file mode 100644
index 0000000..9aff817
--- /dev/null
+++ b/tools/regression/sysvmsg/msgtest.c
@@ -0,0 +1,351 @@
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Obtained from: $NetBSD: msgtest.c,v 1.7 2002/07/20 08:36:25 grant Exp $
+ * $FreeBSD$
+ */
+
+/*
+ * Test the SVID-compatible Message Queue facility.
+ */
+
+#include <sys/param.h>
+#include <sys/ipc.h>
+#include <sys/msg.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+void print_msqid_ds (struct msqid_ds *, mode_t);
+void sigsys_handler(int);
+void sigchld_handler (int);
+void cleanup (void);
+void receiver (void);
+void usage (void);
+
+#define MESSAGE_TEXT_LEN 255
+
+/*
+ * Define it as test_mymsg because we already have struct mymsg and we dont
+ * want to conflict with it. Also, regression fails when the default mymsg
+ * struct is used, because mtext[] array is '1', so the passed string cannot
+ * be processed.
+ */
+struct test_mymsg {
+ long mtype;
+ char mtext[MESSAGE_TEXT_LEN];
+};
+
+const char *m1_str = "California is overrated.";
+const char *m2_str = "The quick brown fox jumped over the lazy dog.";
+
+#define MTYPE_1 1
+#define MTYPE_1_ACK 2
+
+#define MTYPE_2 3
+#define MTYPE_2_ACK 4
+
+int sender_msqid = -1;
+pid_t child_pid;
+
+key_t msgkey;
+
+int
+main(int argc, char *argv[])
+{
+ struct sigaction sa;
+ struct msqid_ds m_ds;
+ struct test_mymsg m;
+ sigset_t sigmask;
+
+ if (argc != 2)
+ usage();
+
+ /*
+ * Install a SIGSYS handler so that we can exit gracefully if
+ * System V Message Queue support isn't in the kernel.
+ */
+ sa.sa_handler = sigsys_handler;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGSYS, &sa, NULL) == -1)
+ err(1, "sigaction SIGSYS");
+
+ /*
+ * Install and SIGCHLD handler to deal with all possible exit
+ * conditions of the receiver.
+ */
+ sa.sa_handler = sigchld_handler;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGCHLD, &sa, NULL) == -1)
+ err(1, "sigaction SIGCHLD");
+
+ msgkey = ftok(argv[1], 4160);
+
+ /*
+ * Initialize child_pid to ourselves to that the cleanup function
+ * works before we create the receiver.
+ */
+ child_pid = getpid();
+
+ /*
+ * Make sure that when the sender exits, the message queue is
+ * removed.
+ */
+ if (atexit(cleanup) == -1)
+ err(1, "atexit");
+
+ if ((sender_msqid = msgget(msgkey, IPC_CREAT | 0640)) == -1)
+ err(1, "msgget");
+
+ if (msgctl(sender_msqid, IPC_STAT, &m_ds) == -1)
+ err(1, "msgctl IPC_STAT");
+
+ print_msqid_ds(&m_ds, 0640);
+
+ m_ds.msg_perm.mode = (m_ds.msg_perm.mode & ~0777) | 0600;
+
+ if (msgctl(sender_msqid, IPC_SET, &m_ds) == -1)
+ err(1, "msgctl IPC_SET");
+
+ bzero(&m_ds, sizeof m_ds);
+
+ if (msgctl(sender_msqid, IPC_STAT, &m_ds) == -1)
+ err(1, "msgctl IPC_STAT");
+
+ if ((m_ds.msg_perm.mode & 0777) != 0600)
+ err(1, "IPC_SET of mode didn't hold");
+
+ print_msqid_ds(&m_ds, 0600);
+
+ switch ((child_pid = fork())) {
+ case -1:
+ err(1, "fork");
+ /* NOTREACHED */
+
+ case 0:
+ receiver();
+ break;
+
+ default:
+ break;
+ }
+
+ /*
+ * Send the first message to the receiver and wait for the ACK.
+ */
+ m.mtype = MTYPE_1;
+ strcpy(m.mtext, m1_str);
+ if (msgsnd(sender_msqid, &m, strlen(m1_str) + 1, 0) == -1)
+ err(1, "sender: msgsnd 1");
+
+ if (msgrcv(sender_msqid, &m, sizeof(m.mtext), MTYPE_1_ACK, 0) !=
+ strlen(m1_str) + 1)
+ err(1, "sender: msgrcv 1 ack");
+
+ print_msqid_ds(&m_ds, 0600);
+
+ /*
+ * Send the second message to the receiver and wait for the ACK.
+ */
+ m.mtype = MTYPE_2;
+ strcpy(m.mtext, m2_str);
+ if (msgsnd(sender_msqid, &m, strlen(m2_str) + 1, 0) == -1)
+ err(1, "sender: msgsnd 2");
+
+ if (msgrcv(sender_msqid, &m, sizeof(m.mtext), MTYPE_2_ACK, 0) !=
+ strlen(m2_str) + 1)
+ err(1, "sender: msgrcv 2 ack");
+
+ /*
+ * Suspend forever; when we get SIGCHLD, the handler will exit.
+ */
+ sigemptyset(&sigmask);
+ (void) sigsuspend(&sigmask);
+
+ /*
+ * ...and any other signal is an unexpected error.
+ */
+ errx(1, "sender: received unexpected signal");
+}
+
+void
+sigsys_handler(int signo)
+{
+
+ errx(1, "System V Message Queue support is not present in the kernel");
+}
+
+void
+sigchld_handler(int signo)
+{
+ struct msqid_ds m_ds;
+ int cstatus;
+
+ /*
+ * Reap the child; if it exited successfully, then the test passed!
+ */
+ if (waitpid(child_pid, &cstatus, 0) != child_pid)
+ err(1, "waitpid");
+
+ if (WIFEXITED(cstatus) == 0)
+ errx(1, "receiver exited abnormally");
+
+ if (WEXITSTATUS(cstatus) != 0)
+ errx(1, "receiver exited with status %d",
+ WEXITSTATUS(cstatus));
+
+ /*
+ * If we get here, the child has exited normally, and thus
+ * we should exit normally too. First, tho, we print out
+ * the final stats for the message queue.
+ */
+
+ if (msgctl(sender_msqid, IPC_STAT, &m_ds) == -1)
+ err(1, "msgctl IPC_STAT");
+
+ print_msqid_ds(&m_ds, 0600);
+
+ exit(0);
+}
+
+void
+cleanup()
+{
+
+ /*
+ * If we're the sender, and it exists, remove the message queue.
+ */
+ if (child_pid != 0 && sender_msqid != -1) {
+ if (msgctl(sender_msqid, IPC_RMID, NULL) == -1)
+ warn("msgctl IPC_RMID");
+ }
+}
+
+void
+print_msqid_ds(struct msqid_ds *mp, mode_t mode)
+{
+ uid_t uid = geteuid();
+ gid_t gid = getegid();
+
+ printf("PERM: uid %d, gid %d, cuid %d, cgid %d, mode 0%o\n",
+ mp->msg_perm.uid, mp->msg_perm.gid,
+ mp->msg_perm.cuid, mp->msg_perm.cgid,
+ mp->msg_perm.mode & 0777);
+
+ printf("qnum %lu, qbytes %lu, lspid %d, lrpid %d\n",
+ mp->msg_qnum, (u_long)mp->msg_qbytes, mp->msg_lspid,
+ mp->msg_lrpid);
+
+ printf("stime: %s", ctime(&mp->msg_stime));
+ printf("rtime: %s", ctime(&mp->msg_rtime));
+ printf("ctime: %s", ctime(&mp->msg_ctime));
+
+ /*
+ * Sanity check a few things.
+ */
+
+ if (mp->msg_perm.uid != uid || mp->msg_perm.cuid != uid)
+ errx(1, "uid mismatch");
+
+ if (mp->msg_perm.gid != gid || mp->msg_perm.cgid != gid)
+ errx(1, "gid mismatch");
+
+ if ((mp->msg_perm.mode & 0777) != mode)
+ errx(1, "mode mismatch");
+}
+
+void
+usage()
+{
+
+ fprintf(stderr, "usage: %s keypath\n", getprogname());
+ exit(1);
+}
+
+void
+receiver()
+{
+ struct test_mymsg m;
+ int msqid;
+
+ if ((msqid = msgget(msgkey, 0)) == -1)
+ err(1, "receiver: msgget");
+
+ /*
+ * Receive the first message, print it, and send an ACK.
+ */
+
+ if (msgrcv(msqid, &m, sizeof(m.mtext), MTYPE_1, 0) !=
+ strlen(m1_str) + 1)
+ err(1, "receiver: msgrcv 1");
+
+ printf("%s\n", m.mtext);
+ if (strcmp(m.mtext, m1_str) != 0)
+ err(1, "receiver: message 1 data isn't correct");
+
+ m.mtype = MTYPE_1_ACK;
+
+ if (msgsnd(msqid, &m, strlen(m1_str) + 1, 0) == -1)
+ err(1, "receiver: msgsnd ack 1");
+
+ /*
+ * Receive the second message, print it, and send an ACK.
+ */
+
+ if (msgrcv(msqid, &m, sizeof(m.mtext), MTYPE_2, 0) !=
+ strlen(m2_str) + 1)
+ err(1, "receiver: msgrcv 2");
+
+ printf("%s\n", m.mtext);
+ if (strcmp(m.mtext, m2_str) != 0)
+ err(1, "receiver: message 2 data isn't correct");
+
+ m.mtype = MTYPE_2_ACK;
+
+ if (msgsnd(msqid, &m, strlen(m2_str) + 1, 0) == -1)
+ err(1, "receiver: msgsnd ack 2");
+
+ exit(0);
+}
diff --git a/tools/regression/sysvsem/Makefile b/tools/regression/sysvsem/Makefile
new file mode 100644
index 0000000..5546b62
--- /dev/null
+++ b/tools/regression/sysvsem/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# SysV Semaphores Regression Utility
+# Obtained from: $NetBSD: Makefile,v 1.3 2002/03/05 21:57:00 thorpej Exp $
+
+PROG= semtest
+NO_MAN=
+
+regress:
+ @if ./semtest ./semtest; then \
+ echo "PASS"; \
+ else \
+ echo "FAIL"; \
+ fi
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sysvsem/README b/tools/regression/sysvsem/README
new file mode 100644
index 0000000..33b9706
--- /dev/null
+++ b/tools/regression/sysvsem/README
@@ -0,0 +1,13 @@
+$FreeBSD$
+
+SysV IPC Semaphore Regression Utility.
+
+This regression utility will test the SysV semaphore functionality
+in FreeBSD. You can start the test by running ``make regress'', after
+running ``make''.
+
+Obtained from: NetBSD Foundation Inc.
+Date of port: 13 August 2002
+
+ -- Hiten Pandya
+ -- hiten@uk.FreeBSD.org
diff --git a/tools/regression/sysvsem/semtest.c b/tools/regression/sysvsem/semtest.c
new file mode 100644
index 0000000..83f73e9
--- /dev/null
+++ b/tools/regression/sysvsem/semtest.c
@@ -0,0 +1,348 @@
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Obtained from: $NetBSD: semtest.c,v 1.4 2002/07/20 08:36:25 grant Exp $
+ * $FreeBSD$
+ */
+
+/*
+ * Test the SVID-compatible Semaphore facility.
+ */
+
+#include <sys/param.h>
+#include <sys/ipc.h>
+#include <sys/sem.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+int main (int, char *[]);
+void print_semid_ds (struct semid_ds *, mode_t);
+void sigsys_handler (int);
+void sigchld_handler(int);
+void cleanup (void);
+void waiter (void);
+void usage (void);
+
+int sender_semid = -1;
+pid_t child_pid;
+int child_count;
+int signal_was_sigchld;
+
+key_t semkey;
+
+/*
+ * This is the original semun union used by the sysvsem utility.
+ * It is deliberately kept here under #if 0'ed condition for future
+ * reference. PLEASE DO NOT REMOVE. The {SET,GET}ALL in FreeBSD
+ * are signed values, so the default version in sys/sem.h suffices.
+ */
+#if 0
+union semun {
+ int val; /* value for SETVAL */
+ struct semid_ds *buf; /* buffer for IPC_{STAT,SET} */
+ u_short *array; /* array for GETALL & SETALL */
+};
+#endif
+
+int
+main(int argc, char *argv[])
+{
+ struct sigaction sa;
+ union semun sun;
+ struct semid_ds s_ds;
+ sigset_t sigmask;
+ int i;
+
+ if (argc != 2)
+ usage();
+
+ /*
+ * Install a SIGSYS handler so that we can exit gracefully if
+ * System V Semaphore support isn't in the kernel.
+ */
+ sa.sa_handler = sigsys_handler;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGSYS, &sa, NULL) == -1)
+ err(1, "sigaction SIGSYS");
+
+ /*
+ * Install and SIGCHLD handler to deal with all possible exit
+ * conditions of the receiver.
+ */
+ sa.sa_handler = sigchld_handler;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGCHLD, &sa, NULL) == -1)
+ err(1, "sigaction SIGCHLD");
+
+ semkey = ftok(argv[1], 4160);
+
+ /*
+ * Initialize child_pid to ourselves to that the cleanup function
+ * works before we create the receiver.
+ */
+ child_pid = getpid();
+
+ /*
+ * Make sure that when the sender exits, the message queue is
+ * removed.
+ */
+ if (atexit(cleanup) == -1)
+ err(1, "atexit");
+
+ if ((sender_semid = semget(semkey, 1, IPC_CREAT | 0640)) == -1)
+ err(1, "semget");
+
+
+ sun.buf = &s_ds;
+ if (semctl(sender_semid, 0, IPC_STAT, sun) == -1)
+ err(1, "semctl IPC_STAT");
+
+ print_semid_ds(&s_ds, 0640);
+
+ s_ds.sem_perm.mode = (s_ds.sem_perm.mode & ~0777) | 0600;
+
+ sun.buf = &s_ds;
+ if (semctl(sender_semid, 0, IPC_SET, sun) == -1)
+ err(1, "semctl IPC_SET");
+
+ memset(&s_ds, 0, sizeof(s_ds));
+
+ sun.buf = &s_ds;
+ if (semctl(sender_semid, 0, IPC_STAT, sun) == -1)
+ err(1, "semctl IPC_STAT");
+
+ if ((s_ds.sem_perm.mode & 0777) != 0600)
+ err(1, "IPC_SET of mode didn't hold");
+
+ print_semid_ds(&s_ds, 0600);
+
+ for (child_count = 0; child_count < 5; child_count++) {
+ switch ((child_pid = fork())) {
+ case -1:
+ err(1, "fork");
+ /* NOTREACHED */
+
+ case 0:
+ waiter();
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ /*
+ * Wait for all of the waiters to be attempting to acquire the
+ * semaphore.
+ */
+ for (;;) {
+ i = semctl(sender_semid, 0, GETNCNT);
+ if (i == -1)
+ err(1, "semctl GETNCNT");
+ if (i == 5)
+ break;
+ }
+
+ /*
+ * Now set the thundering herd in motion by initializing the
+ * semaphore to the value 1.
+ */
+ sun.val = 1;
+ if (semctl(sender_semid, 0, SETVAL, sun) == -1)
+ err(1, "sender: semctl SETVAL to 1");
+
+ /*
+ * Suspend forever; when we get SIGCHLD, the handler will exit.
+ */
+ sigemptyset(&sigmask);
+ for (;;) {
+ (void) sigsuspend(&sigmask);
+ if (signal_was_sigchld)
+ signal_was_sigchld = 0;
+ else
+ break;
+ }
+
+ /*
+ * ...and any other signal is an unexpected error.
+ */
+ errx(1, "sender: received unexpected signal");
+}
+
+void
+sigsys_handler(int signo)
+{
+
+ errx(1, "System V Semaphore support is not present in the kernel");
+}
+
+void
+sigchld_handler(int signo)
+{
+ union semun sun;
+ struct semid_ds s_ds;
+ int cstatus;
+
+ /*
+ * Reap the child; if it exited successfully, then we're on the
+ * right track!
+ */
+ if (wait(&cstatus) == -1)
+ err(1, "wait");
+
+ if (WIFEXITED(cstatus) == 0)
+ errx(1, "receiver exited abnormally");
+
+ if (WEXITSTATUS(cstatus) != 0)
+ errx(1, "receiver exited with status %d",
+ WEXITSTATUS(cstatus));
+
+ /*
+ * If we get here, the child has exited normally, and we should
+ * decrement the child count. If the child_count reaches 0, we
+ * should exit.
+ */
+
+ sun.buf = &s_ds;
+ if (semctl(sender_semid, 0, IPC_STAT, sun) == -1)
+ err(1, "semctl IPC_STAT");
+
+ print_semid_ds(&s_ds, 0600);
+
+ if (--child_count != 0) {
+ signal_was_sigchld = 1;
+ return;
+ }
+
+ exit(0);
+}
+
+void
+cleanup()
+{
+
+ /*
+ * If we're the sender, and it exists, remove the message queue.
+ */
+ if (child_pid != 0 && sender_semid != -1) {
+ if (semctl(sender_semid, 0, IPC_RMID) == -1)
+ warn("semctl IPC_RMID");
+ }
+}
+
+void
+print_semid_ds(struct semid_ds *sp, mode_t mode)
+{
+ uid_t uid = geteuid();
+ gid_t gid = getegid();
+
+ printf("PERM: uid %d, gid %d, cuid %d, cgid %d, mode 0%o\n",
+ sp->sem_perm.uid, sp->sem_perm.gid,
+ sp->sem_perm.cuid, sp->sem_perm.cgid,
+ sp->sem_perm.mode & 0777);
+
+ printf("nsems %u\n", sp->sem_nsems);
+
+ printf("otime: %s", ctime(&sp->sem_otime));
+ printf("ctime: %s", ctime(&sp->sem_ctime));
+
+ /*
+ * Sanity check a few things.
+ */
+
+ if (sp->sem_perm.uid != uid || sp->sem_perm.cuid != uid)
+ errx(1, "uid mismatch");
+
+ if (sp->sem_perm.gid != gid || sp->sem_perm.cgid != gid)
+ errx(1, "gid mismatch");
+
+ if ((sp->sem_perm.mode & 0777) != mode)
+ errx(1, "mode mismatch %o != %o",
+ (sp->sem_perm.mode & 0777), mode);
+}
+
+void
+usage()
+{
+
+ fprintf(stderr, "usage: %s keypath\n", getprogname());
+ exit(1);
+}
+
+void
+waiter()
+{
+ struct sembuf s;
+ int semid;
+
+ if ((semid = semget(semkey, 1, 0)) == -1)
+ err(1, "waiter: semget");
+
+ /*
+ * Attempt to acquire the semaphore.
+ */
+ s.sem_num = 0;
+ s.sem_op = -1;
+ s.sem_flg = SEM_UNDO;
+
+ if (semop(semid, &s, 1) == -1)
+ err(1, "waiter: semop -1");
+
+ printf("WOO! GOT THE SEMAPHORE!\n");
+ sleep(1);
+
+ /*
+ * Release the semaphore and exit.
+ */
+ s.sem_num = 0;
+ s.sem_op = 1;
+ s.sem_flg = SEM_UNDO;
+
+ if (semop(semid, &s, 1) == -1)
+ err(1, "waiter: semop +1");
+
+ exit(0);
+}
diff --git a/tools/regression/sysvshm/Makefile b/tools/regression/sysvshm/Makefile
new file mode 100644
index 0000000..f26b4a7
--- /dev/null
+++ b/tools/regression/sysvshm/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+# SysV Shared Memory Regression Utility
+# Obtained from: $NetBSD: Makefile,v 1.3 2002/03/05 21:57:00 thorpej Exp $
+
+PROG= shmtest
+NO_MAN=
+
+regress:
+ @if ./shmtest ./shmtest; then \
+ echo "PASS"; \
+ else \
+ echo "FAIL"; \
+ fi
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/sysvshm/README b/tools/regression/sysvshm/README
new file mode 100644
index 0000000..4e0125e
--- /dev/null
+++ b/tools/regression/sysvshm/README
@@ -0,0 +1,13 @@
+$FreeBSD$
+
+SysV IPC Shared Memory Regression Utility.
+
+This regression utility will test the SysV Shared Memory facility
+in FreeBSD. You can start the test by running ``make regress'', after
+running ``make''.
+
+Obtained from: The NetBSD Foundation.
+Date of port: 13 August 2002
+
+ -- Hiten Pandya
+ -- hiten@uk.FreeBSD.org
diff --git a/tools/regression/sysvshm/shmtest.c b/tools/regression/sysvshm/shmtest.c
new file mode 100644
index 0000000..22f626e
--- /dev/null
+++ b/tools/regression/sysvshm/shmtest.c
@@ -0,0 +1,297 @@
+/*-
+ * Copyright (c) 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Obtained from: $NetBSD: shmtest.c,v 1.3 2002/07/20 08:36:26 grant Exp $
+ * $FreeBSD$
+ */
+
+/*
+ * Test the SVID-compatible Shared Memory facility.
+ */
+
+#include <sys/param.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+int main __P((int, char *[]));
+void print_shmid_ds __P((struct shmid_ds *, mode_t));
+void sigsys_handler __P((int));
+void sigchld_handler __P((int));
+void cleanup __P((void));
+void receiver __P((void));
+void usage __P((void));
+
+const char *m_str = "The quick brown fox jumped over the lazy dog.";
+
+int sender_shmid = -1;
+pid_t child_pid;
+
+key_t shmkey;
+
+size_t pgsize;
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ struct sigaction sa;
+ struct shmid_ds s_ds;
+ sigset_t sigmask;
+ char *shm_buf;
+
+ if (argc != 2)
+ usage();
+
+ /*
+ * Install a SIGSYS handler so that we can exit gracefully if
+ * System V Shared Memory support isn't in the kernel.
+ */
+ sa.sa_handler = sigsys_handler;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGSYS, &sa, NULL) == -1)
+ err(1, "sigaction SIGSYS");
+
+ /*
+ * Install and SIGCHLD handler to deal with all possible exit
+ * conditions of the receiver.
+ */
+ sa.sa_handler = sigchld_handler;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ if (sigaction(SIGCHLD, &sa, NULL) == -1)
+ err(1, "sigaction SIGCHLD");
+
+ pgsize = sysconf(_SC_PAGESIZE);
+
+ shmkey = ftok(argv[1], 4160);
+
+ /*
+ * Initialize child_pid to ourselves to that the cleanup function
+ * works before we create the receiver.
+ */
+ child_pid = getpid();
+
+ /*
+ * Make sure that when the sender exits, the message queue is
+ * removed.
+ */
+ if (atexit(cleanup) == -1)
+ err(1, "atexit");
+
+ if ((sender_shmid = shmget(shmkey, pgsize, IPC_CREAT | 0640)) == -1)
+ err(1, "shmget");
+
+ if (shmctl(sender_shmid, IPC_STAT, &s_ds) == -1)
+ err(1, "shmctl IPC_STAT");
+
+ print_shmid_ds(&s_ds, 0640);
+
+ s_ds.shm_perm.mode = (s_ds.shm_perm.mode & ~0777) | 0600;
+
+ if (shmctl(sender_shmid, IPC_SET, &s_ds) == -1)
+ err(1, "shmctl IPC_SET");
+
+ memset(&s_ds, 0, sizeof(s_ds));
+
+ if (shmctl(sender_shmid, IPC_STAT, &s_ds) == -1)
+ err(1, "shmctl IPC_STAT");
+
+ if ((s_ds.shm_perm.mode & 0777) != 0600)
+ err(1, "IPC_SET of mode didn't hold");
+
+ print_shmid_ds(&s_ds, 0600);
+
+ if ((shm_buf = shmat(sender_shmid, NULL, 0)) == (void *) -1)
+ err(1, "sender: shmat");
+
+ /*
+ * Write the test pattern into the shared memory buffer.
+ */
+ strcpy(shm_buf, m_str);
+
+ switch ((child_pid = fork())) {
+ case -1:
+ err(1, "fork");
+ /* NOTREACHED */
+
+ case 0:
+ receiver();
+ break;
+
+ default:
+ break;
+ }
+
+ /*
+ * Suspend forever; when we get SIGCHLD, the handler will exit.
+ */
+ sigemptyset(&sigmask);
+ (void) sigsuspend(&sigmask);
+
+ /*
+ * ...and any other signal is an unexpected error.
+ */
+ errx(1, "sender: received unexpected signal");
+}
+
+void
+sigsys_handler(signo)
+ int signo;
+{
+
+ errx(1, "System V Shared Memory support is not present in the kernel");
+}
+
+void
+sigchld_handler(signo)
+ int signo;
+{
+ struct shmid_ds s_ds;
+ int cstatus;
+
+ /*
+ * Reap the child; if it exited successfully, then the test passed!
+ */
+ if (waitpid(child_pid, &cstatus, 0) != child_pid)
+ err(1, "waitpid");
+
+ if (WIFEXITED(cstatus) == 0)
+ errx(1, "receiver exited abnormally");
+
+ if (WEXITSTATUS(cstatus) != 0)
+ errx(1, "receiver exited with status %d",
+ WEXITSTATUS(cstatus));
+
+ /*
+ * If we get here, the child has exited normally, and thus
+ * we should exit normally too. First, tho, we print out
+ * the final stats for the message queue.
+ */
+
+ if (shmctl(sender_shmid, IPC_STAT, &s_ds) == -1)
+ err(1, "shmctl IPC_STAT");
+
+ print_shmid_ds(&s_ds, 0600);
+
+ exit(0);
+}
+
+void
+cleanup()
+{
+
+ /*
+ * If we're the sender, and it exists, remove the shared memory area.
+ */
+ if (child_pid != 0 && sender_shmid != -1) {
+ if (shmctl(sender_shmid, IPC_RMID, NULL) == -1)
+ warn("shmctl IPC_RMID");
+ }
+}
+
+void
+print_shmid_ds(sp, mode)
+ struct shmid_ds *sp;
+ mode_t mode;
+{
+ uid_t uid = geteuid();
+ gid_t gid = getegid();
+
+ printf("PERM: uid %d, gid %d, cuid %d, cgid %d, mode 0%o\n",
+ sp->shm_perm.uid, sp->shm_perm.gid,
+ sp->shm_perm.cuid, sp->shm_perm.cgid,
+ sp->shm_perm.mode & 0777);
+
+ printf("segsz %lu, lpid %d, cpid %d, nattch %u\n",
+ (u_long)sp->shm_segsz, sp->shm_lpid, sp->shm_cpid,
+ sp->shm_nattch);
+
+ printf("atime: %s", ctime(&sp->shm_atime));
+ printf("dtime: %s", ctime(&sp->shm_dtime));
+ printf("ctime: %s", ctime(&sp->shm_ctime));
+
+ /*
+ * Sanity check a few things.
+ */
+
+ if (sp->shm_perm.uid != uid || sp->shm_perm.cuid != uid)
+ errx(1, "uid mismatch");
+
+ if (sp->shm_perm.gid != gid || sp->shm_perm.cgid != gid)
+ errx(1, "gid mismatch");
+
+ if ((sp->shm_perm.mode & 0777) != mode)
+ errx(1, "mode mismatch");
+}
+
+void
+usage()
+{
+
+ fprintf(stderr, "usage: %s keypath\n", getprogname());
+ exit(1);
+}
+
+void
+receiver()
+{
+ int shmid;
+ void *shm_buf;
+
+ if ((shmid = shmget(shmkey, pgsize, 0)) == -1)
+ err(1, "receiver: shmget");
+
+ if ((shm_buf = shmat(shmid, NULL, 0)) == (void *) -1)
+ err(1, "receiver: shmat");
+
+ printf("%s\n", (const char *)shm_buf);
+ if (strcmp((const char *)shm_buf, m_str) != 0)
+ err(1, "receiver: data isn't correct");
+
+ exit(0);
+}
diff --git a/tools/regression/tls/Makefile b/tools/regression/tls/Makefile
new file mode 100644
index 0000000..76def96
--- /dev/null
+++ b/tools/regression/tls/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+SUBDIR=libxx libyy ttls1 ttls2 ttls4
+
+.if ${MACHINE_ARCH} == "i386"
+SUBDIR+=ttls3
+.endif
+
+.include <bsd.subdir.mk>
diff --git a/tools/regression/tls/Makefile.inc b/tools/regression/tls/Makefile.inc
new file mode 100644
index 0000000..7f4acd0
--- /dev/null
+++ b/tools/regression/tls/Makefile.inc
@@ -0,0 +1 @@
+#CFLAGS+= -mno-tls-direct-seg-refs
diff --git a/tools/regression/tls/libxx/Makefile b/tools/regression/tls/libxx/Makefile
new file mode 100644
index 0000000..bc9393b
--- /dev/null
+++ b/tools/regression/tls/libxx/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+LIB= xx
+SHLIB_MAJOR= 1
+
+SRCS= xx.c
+#CFLAGS+=-mtls-dialect=sun
+
+.include <bsd.lib.mk>
diff --git a/tools/regression/tls/libxx/xx.c b/tools/regression/tls/libxx/xx.c
new file mode 100644
index 0000000..6d1e73f
--- /dev/null
+++ b/tools/regression/tls/libxx/xx.c
@@ -0,0 +1,12 @@
+/* $FreeBSD$ */
+
+extern int __thread yy1;
+int __thread xx1 = 1;
+int __thread xx2 = 2;
+int __thread xxa[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+
+int
+xxyy()
+{
+ return yy1;
+}
diff --git a/tools/regression/tls/libyy/Makefile b/tools/regression/tls/libyy/Makefile
new file mode 100644
index 0000000..8b45b99
--- /dev/null
+++ b/tools/regression/tls/libyy/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+LIB= yy
+SHLIB_MAJOR= 1
+
+SRCS= yy.c
+CFLAGS+=-fpic
+
+.include <bsd.lib.mk>
diff --git a/tools/regression/tls/libyy/yy.c b/tools/regression/tls/libyy/yy.c
new file mode 100644
index 0000000..c00cb87
--- /dev/null
+++ b/tools/regression/tls/libyy/yy.c
@@ -0,0 +1,3 @@
+/* $FreeBSD$ */
+
+int __thread yy1 = 101;
diff --git a/tools/regression/tls/ttls1/Makefile b/tools/regression/tls/ttls1/Makefile
new file mode 100644
index 0000000..d3b6e65
--- /dev/null
+++ b/tools/regression/tls/ttls1/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+PROG= ttls1
+LDADD+= -L../libxx -lxx -Wl,--rpath=${.OBJDIR}/../libxx
+LDADD+= -L../libyy -lyy -Wl,--rpath=${.OBJDIR}/../libyy
+NO_MAN=
+DEBUG_FLAGS= -g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/tls/ttls1/ttls1.c b/tools/regression/tls/ttls1/ttls1.c
new file mode 100644
index 0000000..9c514ae
--- /dev/null
+++ b/tools/regression/tls/ttls1/ttls1.c
@@ -0,0 +1,15 @@
+/* $FreeBSD$ */
+
+#include <stdio.h>
+
+extern int __thread xx1;
+extern int __thread xx2;
+extern int __thread xxa[];
+int __thread a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+extern int xxyy();
+
+int main(int argc, char** argv)
+{
+ printf("xx1=%d, xx2=%d, xxa[5]=%d, a[5]=%d, xxyy()=%d\n",
+ xx1, xx2, xxa[5], a[5], xxyy());
+}
diff --git a/tools/regression/tls/ttls2/Makefile b/tools/regression/tls/ttls2/Makefile
new file mode 100644
index 0000000..0a3bc95
--- /dev/null
+++ b/tools/regression/tls/ttls2/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG= ttls2
+LDADD+= -lpthread
+NO_MAN=
+DEBUG_FLAGS= -g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/tls/ttls2/ttls2.c b/tools/regression/tls/ttls2/ttls2.c
new file mode 100644
index 0000000..f528e3d
--- /dev/null
+++ b/tools/regression/tls/ttls2/ttls2.c
@@ -0,0 +1,36 @@
+/* $FreeBSD$ */
+
+#include <stdio.h>
+#include <pthread.h>
+
+int __thread i;
+
+void *
+foo1(void *arg)
+{
+ printf("thread %p, &i = %p\n", pthread_self(), &i);
+ for (i = 0; i < 10; i++) {
+ printf("thread %p, i = %d\n", pthread_self(), i);
+ sleep(1);
+ }
+}
+
+void *
+foo2(void *arg)
+{
+ printf("thread %p, &i = %p\n", pthread_self(), &i);
+ for (i = 10; i > 0; i--) {
+ printf("thread %p, i = %d\n", pthread_self(), i);
+ sleep(1);
+ }
+}
+
+int main(int argc, char** argv)
+{
+ pthread_t t1, t2;
+
+ pthread_create(&t1, 0, foo1, 0);
+ pthread_create(&t2, 0, foo2, 0);
+ pthread_join(t1, 0);
+ pthread_join(t2, 0);
+}
diff --git a/tools/regression/tls/ttls3/Makefile b/tools/regression/tls/ttls3/Makefile
new file mode 100644
index 0000000..b171181
--- /dev/null
+++ b/tools/regression/tls/ttls3/Makefile
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+all: ttls3
+
+LDFLAGS=-shared -Bsymbolic --allow-shlib-undefined
+CFLAGS+= -lpthread
+CFLAGS+= -Wl,--rpath=${.OBJDIR}
+
+tls-lib: elftls.S
+ gcc -c -o elftls.o ${.CURDIR}/elftls.S
+ ld $(LDFLAGS) elftls.o -soname libtls.so.1 -o libtls.so.1
+ ln -sf libtls.so.1 libtls.so
+
+tls-test-lib: tls-lib tls-test-lib.c
+ gcc -c -o tls-test.o ${.CURDIR}/tls-test-lib.c
+ ld $(LDFLAGS) tls-test.o libtls.so.1 -rpath=${.OBJDIR} -soname libtls-test.so.1 -o libtls-test.so.1
+
+ttls3: tls-test-lib tls-test.c
+ gcc $(CFLAGS) -rdynamic -o ttls3 ${.CURDIR}/tls-test.c
+
+clean:
+ rm -f *.o libtls.so* libtls-test.so* ttls3
+
+.include <bsd.obj.mk>
diff --git a/tools/regression/tls/ttls3/elftls.S b/tools/regression/tls/ttls3/elftls.S
new file mode 100644
index 0000000..0fad08d
--- /dev/null
+++ b/tools/regression/tls/ttls3/elftls.S
@@ -0,0 +1,114 @@
+/*-
+ * Copyright (C) 2004 NVIDIA Corporation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+.file "elftls.S"
+
+.globl __gl_tls_offsets
+ .type __gl_tls_offsets,@object
+
+.section .tbss,"awT",@nobits
+
+.globl __gl_tls_var0
+ .align 4
+ .type __gl_tls_var0, @object
+ .size __gl_tls_var0, 4
+__gl_tls_var0:
+ .zero 4
+
+.globl __gl_tls_var1
+ .align 4
+ .type __gl_tls_var1, @object
+ .size __gl_tls_var1, 4
+__gl_tls_var1:
+ .zero 4
+
+.globl __gl_tls_var2
+ .align 4
+ .type __gl_tls_var2, @object
+ .size __gl_tls_var2, 4
+__gl_tls_var2:
+ .zero 4
+
+.globl __gl_tls_var3
+ .align 4
+ .type __gl_tls_var3, @object
+ .size __gl_tls_var3, 4
+__gl_tls_var3:
+ .zero 4
+
+.globl __gl_tls_var4
+ .align 4
+ .type __gl_tls_var4, @object
+ .size __gl_tls_var4, 4
+__gl_tls_var4:
+ .zero 4
+
+.globl __gl_tls_var5
+ .align 4
+ .type __gl_tls_var5, @object
+ .size __gl_tls_var5, 4
+__gl_tls_var5:
+ .zero 4
+
+.globl __gl_tls_var6
+ .align 4
+ .type __gl_tls_var6, @object
+ .size __gl_tls_var6, 4
+__gl_tls_var6:
+ .zero 4
+
+.globl __gl_tls_var7
+ .align 4
+ .type __gl_tls_var7, @object
+ .size __gl_tls_var7, 4
+__gl_tls_var7:
+ .zero 4
+
+.text
+ .p2align 4,,15
+.globl __gl_tls_init_offsets
+ .type __gl_tls_init_offsets, @function
+__gl_tls_init_offsets:
+ movl $__gl_tls_offsets, %eax
+ movl $__gl_tls_var0@ntpoff, %ecx
+ movl %ecx, 0(%eax)
+ movl $__gl_tls_var1@ntpoff, %ecx
+ movl %ecx, 4(%eax)
+ movl $__gl_tls_var2@ntpoff, %ecx
+ movl %ecx, 8(%eax)
+ movl $__gl_tls_var3@ntpoff, %ecx
+ movl %ecx, 12(%eax)
+ movl $__gl_tls_var4@ntpoff, %ecx
+ movl %ecx, 16(%eax)
+ movl $__gl_tls_var5@ntpoff, %ecx
+ movl %ecx, 20(%eax)
+ movl $__gl_tls_var6@ntpoff, %ecx
+ movl %ecx, 24(%eax)
+ movl $__gl_tls_var7@ntpoff, %ecx
+ movl %ecx, 28(%eax)
+ ret
diff --git a/tools/regression/tls/ttls3/tls-test-lib.c b/tools/regression/tls/ttls3/tls-test-lib.c
new file mode 100644
index 0000000..bc88ad1
--- /dev/null
+++ b/tools/regression/tls/ttls3/tls-test-lib.c
@@ -0,0 +1,110 @@
+/*-
+ * Copyright (C) 2004 NVIDIA Corporation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <stdio.h>
+
+#define __G_TLS_OFFSETS_SIZE 8
+unsigned long int __gl_tls_offsets[__G_TLS_OFFSETS_SIZE];
+
+void __gl_tls_init_offsets();
+
+#ifdef __GL_TLS_SINGLE_INSTRUCTION
+#define THREAD_GETMEM(num) \
+({ \
+ void *__value; \
+ __asm__ __volatile__ ( \
+ "movl %%gs:(%1),%0" \
+ : "=r" (__value) \
+ : "r" (__gl_tls_offsets[num]) \
+ ); \
+ __value; \
+})
+
+#define THREAD_SETMEM(num, value) \
+do { \
+ void *__value = (value); \
+ __asm__ __volatile__ ( \
+ "movl %0,%%gs:(%1)" \
+ : \
+ : "r" (__value), \
+ "r" (__gl_tls_offsets[num]) \
+ ); \
+} while (0)
+#else
+#define __GL_TLS_GET(num) \
+({ \
+ void *__dummy, *__value; \
+ __asm__ __volatile__ ( \
+ "movl %%gs:0,%2 \n\t" \
+ "movl (%2,%1),%0 \n\t" \
+ : "=r" (__value) \
+ : "r" (__gl_tls_offsets[num]), \
+ "r" (__dummy) \
+ ); \
+ __value; \
+})
+
+#define __GL_TLS_SET(num, value) \
+do { \
+ void *__dummy, *__value = (value); \
+ __asm__ __volatile__ ( \
+ "movl %%gs:0,%2 \n\t" \
+ "movl %0,(%2,%1) \n\t" \
+ : \
+ : "r" (__value), \
+ "r" (__gl_tls_offsets[num]), \
+ "r" (__dummy) \
+ ); \
+} while (0)
+#endif
+
+void _init(void)
+{
+ __gl_tls_init_offsets();
+
+ __GL_TLS_SET(0, (void *) 0xff000000);
+ __GL_TLS_SET(1, (void *) 0xff000001);
+ __GL_TLS_SET(2, (void *) 0xff000002);
+ __GL_TLS_SET(3, (void *) 0xff000003);
+ __GL_TLS_SET(4, (void *) 0xff000004);
+ __GL_TLS_SET(5, (void *) 0xff000005);
+ __GL_TLS_SET(6, (void *) 0xff000006);
+ __GL_TLS_SET(7, (void *) 0xff000007);
+}
+
+void __gl_tls_test(void)
+{
+ printf("__GL_TLS_GET(0) = %p\n", __GL_TLS_GET(0));
+ printf("__GL_TLS_GET(1) = %p\n", __GL_TLS_GET(1));
+ printf("__GL_TLS_GET(2) = %p\n", __GL_TLS_GET(2));
+ printf("__GL_TLS_GET(3) = %p\n", __GL_TLS_GET(3));
+ printf("__GL_TLS_GET(4) = %p\n", __GL_TLS_GET(4));
+ printf("__GL_TLS_GET(5) = %p\n", __GL_TLS_GET(5));
+ printf("__GL_TLS_GET(6) = %p\n", __GL_TLS_GET(6));
+ printf("__GL_TLS_GET(7) = %p\n", __GL_TLS_GET(7));
+}
diff --git a/tools/regression/tls/ttls3/tls-test.c b/tools/regression/tls/ttls3/tls-test.c
new file mode 100644
index 0000000..539b6ce
--- /dev/null
+++ b/tools/regression/tls/ttls3/tls-test.c
@@ -0,0 +1,59 @@
+/*-
+ * Copyright (C) 2004 NVIDIA Corporation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <stdio.h>
+#include <dlfcn.h>
+
+int main(int argc, char **argv)
+{
+ void *handle;
+ void (*__gl_tls_test)(void);
+ const char *error;
+
+ handle = dlopen("libtls-test.so.1", RTLD_NOW);
+ if (!handle) {
+ error = dlerror();
+ printf("dlopen failed (%s)!\n", error);
+ exit(1);
+ }
+
+ dlerror();
+ __gl_tls_test = dlsym(handle, "__gl_tls_test");
+ error = dlerror();
+
+ if (error) {
+ dlclose(handle);
+ printf("dlsym failed (%s)!\n", error);
+ exit(1);
+ }
+
+ __gl_tls_test(); /* print TLS values */
+ dlclose(handle);
+
+ return 0;
+}
diff --git a/tools/regression/tls/ttls4/Makefile b/tools/regression/tls/ttls4/Makefile
new file mode 100644
index 0000000..5fb37df
--- /dev/null
+++ b/tools/regression/tls/ttls4/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG= ttls4
+LDADD+= -lpthread
+NO_MAN=
+DEBUG_FLAGS= -g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/tls/ttls4/ttls4.c b/tools/regression/tls/ttls4/ttls4.c
new file mode 100644
index 0000000..d55e51b
--- /dev/null
+++ b/tools/regression/tls/ttls4/ttls4.c
@@ -0,0 +1,41 @@
+/*
+ * This program tests if a new thread's initial tls data
+ * is clean.
+ *
+ * David Xu <davidxu@freebsd.org>
+ *
+ * $FreeBSD$
+ */
+
+#include <stdio.h>
+#include <pthread.h>
+#include <unistd.h>
+
+int __thread n;
+
+void *f1(void *arg)
+{
+ if (n != 0) {
+ printf("bug, n == %d \n", n);
+ exit(1);
+ }
+ n = 1;
+ return (0);
+}
+
+int main()
+{
+ pthread_t td;
+ int i;
+
+ for (i = 0; i < 1000; ++i) {
+ pthread_create(&td, NULL, f1, NULL);
+ pthread_join(td, NULL);
+ }
+ sleep(2);
+ for (i = 0; i < 1000; ++i) {
+ pthread_create(&td, NULL, f1, NULL);
+ pthread_join(td, NULL);
+ }
+ return (0);
+}
diff --git a/tools/regression/tmpfs/Makefile b/tools/regression/tmpfs/Makefile
new file mode 100644
index 0000000..7f21fa7
--- /dev/null
+++ b/tools/regression/tmpfs/Makefile
@@ -0,0 +1,39 @@
+# $NetBSD: Makefile,v 1.4 2006/11/09 15:25:37 jmmv Exp $
+# $FreeBSD$
+
+tests= t_mount
+tests+= t_statvfs
+tests+= t_mkdir
+tests+= t_vnode_leak
+tests+= t_setattr
+tests+= t_rmdir
+tests+= t_id_gen
+tests+= t_trail_slash
+tests+= t_dots
+tests+= t_create
+tests+= t_remove
+tests+= t_link
+tests+= t_rename
+tests+= t_read_write
+tests+= t_exec
+tests+= t_truncate
+tests+= t_sizes
+tests+= t_times
+tests+= t_symlink
+tests+= t_pipes
+tests+= t_sockets
+tests+= t_readdir
+tests+= t_vnd
+
+regress: ${tests}
+.for t in ${tests}
+ @SUBRDIR=${.CURDIR} /bin/sh ${.CURDIR}/${t} ${TEST_ARGS}
+.endfor
+
+PROG= h_tools
+NO_MAN= # defined
+WARNS= 4
+
+t_sizes t_sockets t_statvfs: h_tools
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/tmpfs/h_funcs.subr b/tools/regression/tmpfs/h_funcs.subr
new file mode 100644
index 0000000..22c9de3
--- /dev/null
+++ b/tools/regression/tmpfs/h_funcs.subr
@@ -0,0 +1,191 @@
+#!/bin/sh
+#
+# $NetBSD: h_funcs.subr,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Helper functions for tests written in shell script.
+#
+
+Prog_Name=${0##*/}
+Src_Dir=$(pwd)
+Unprived_User=
+Verbose=2
+Work_Dir=$(pwd)/tmp
+
+# -------------------------------------------------------------------------
+
+# die
+#
+# Called by tests when a command fails unexpectedly. Terminates
+# execution and tries to clean up the mount point.
+#
+die() {
+ if [ -d ${Work_Dir} ]; then
+ cd ${Src_Dir}
+ umount ${Work_Dir}
+ rmdir ${Work_Dir}
+ fi
+ [ ${Verbose} -eq 2 ] && err "Test ended unexpectedly"
+ [ ${Verbose} -eq 1 ] && echo " failed."
+ exit 1
+}
+
+# -------------------------------------------------------------------------
+
+# err message
+#
+# Shows the given error message and terminates the program.
+#
+err() {
+ echo "${Prog_Name}: $*" 1>&2
+ exit 1
+}
+
+# -------------------------------------------------------------------------
+
+# test_mount [args]
+#
+# Mounts tmpfs over ${Work_Dir} and changes the current directory
+# to the mount point. Optional arguments may be passed to the
+# mount command.
+#
+test_mount() {
+ mkdir ${Work_Dir} || die
+ if [ $# -gt 0 ]; then
+ mount -t tmpfs "$@" tmpfs ${Work_Dir} || die
+ else
+ mount -t tmpfs tmpfs ${Work_Dir} || die
+ fi
+ cd ${Work_Dir}
+}
+
+# -------------------------------------------------------------------------
+
+# test_name message
+#
+# Prints a message about what a test is going to do.
+#
+test_name() {
+ [ ${Verbose} -gt 1 ] && echo " $*..."
+}
+
+# -------------------------------------------------------------------------
+
+# test_unmount
+#
+# Unmounts the file system mounted by test_mount.
+#
+test_unmount() {
+ cd -
+ umount ${Work_Dir} || die
+ rmdir ${Work_Dir} || die
+}
+
+# -------------------------------------------------------------------------
+
+# kqueue_monitor expected_nevents file1 [.. fileN]
+#
+# Monitors the commands given through stdin (one per line) using
+# kqueue and stores the events raised in a log that can be later
+# verified with kqueue_check.
+#
+kqueue_monitor() {
+ nev=${1}; shift
+ test_name "Running kqueue-monitored commands and expecting" \
+ "${nev} events"
+ ${Src_Dir}/h_tools kqueue ${*} >kqueue.log || return 1
+ got=$(wc -l kqueue.log | awk '{ print $1 }')
+ test ${got} -eq ${nev}
+}
+
+# -------------------------------------------------------------------------
+
+# kqueue_check file event
+#
+# Checks if kqueue raised the given event when monitoring the
+# given file.
+#
+kqueue_check() {
+ grep "^${1} - ${2}$" kqueue.log >/dev/null
+}
+
+# -------------------------------------------------------------------------
+
+main() {
+ local args
+
+ [ $(id -un) = root ] || err "Must be run as root"
+
+ args=$(getopt u:v:w: $*)
+ if [ $? -ne 0 ]; then
+ echo "Usage: ${Prog_Name} [-u unprived_user] [-v level] " \
+ "[-w root_dir]" 1>&2
+ return 1
+ fi
+ set -- ${args}
+ while [ $# -gt 0 ]; do
+ case "$1" in
+ -u)
+ Unprived_User="$2"; shift
+ ;;
+ -v)
+ Verbose="$2"; shift
+ ;;
+ -w)
+ Work_Dir="$2"; shift
+ ;;
+ --)
+ shift; break
+ ;;
+ esac
+ shift
+ done
+
+ [ ${Verbose} -eq 1 ] && echo -n "${Prog_Name}:"
+ [ ${Verbose} -eq 2 ] && echo "${Prog_Name}: Running tests"
+ test_run
+ [ ${Verbose} -eq 1 ] && echo " ok."
+ [ ${Verbose} -eq 2 ] && echo "${Prog_Name}: All tests were successful"
+
+ return 0
+}
+
+main "$@"
diff --git a/tools/regression/tmpfs/h_tools.c b/tools/regression/tmpfs/h_tools.c
new file mode 100644
index 0000000..9d89401
--- /dev/null
+++ b/tools/regression/tmpfs/h_tools.c
@@ -0,0 +1,283 @@
+/* $NetBSD: h_tools.c,v 1.7 2006/11/09 16:20:06 jmmv Exp $ */
+
+/*-
+ * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+ * 2005 program.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Helper tools for several tests. These are kept in a single file due
+ * to the limitations of bsd.prog.mk to build a single program in a
+ * given directory.
+ */
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/mount.h>
+#include <sys/statvfs.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <sys/un.h>
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/* --------------------------------------------------------------------- */
+
+static int getfh_main(int, char **);
+static int kqueue_main(int, char **);
+static int rename_main(int, char **);
+static int sockets_main(int, char **);
+static int statvfs_main(int, char **);
+
+/* --------------------------------------------------------------------- */
+
+int
+getfh_main(int argc, char **argv)
+{
+ int error;
+ fhandle_t fh;
+
+ if (argc < 2)
+ return EXIT_FAILURE;
+
+ error = getfh(argv[1], &fh);
+ if (error == 0)
+ err(EXIT_FAILURE, "can not getfh");
+
+ error = write(STDOUT_FILENO, &fh, sizeof(fh));
+ if (error == -1) {
+ perror("write");
+ return EXIT_FAILURE;
+ }
+
+ return 0;
+}
+
+/* --------------------------------------------------------------------- */
+
+int
+kqueue_main(int argc, char **argv)
+{
+ char *line;
+ int i, kq;
+ size_t len;
+ struct kevent *changes, event;
+
+ if (argc < 2)
+ return EXIT_FAILURE;
+
+ argc--;
+ argv++;
+
+ changes = malloc(sizeof(struct kevent) * (argc - 1));
+ if (changes == NULL)
+ errx(EXIT_FAILURE, "not enough memory");
+
+ for (i = 0; i < argc; i++) {
+ int fd;
+
+ fd = open(argv[i], O_RDONLY);
+ if (fd == -1)
+ err(EXIT_FAILURE, "cannot open %s", argv[i]);
+
+ EV_SET(&changes[i], fd, EVFILT_VNODE,
+ EV_ADD | EV_ENABLE | EV_ONESHOT,
+ NOTE_ATTRIB | NOTE_DELETE | NOTE_EXTEND | NOTE_LINK |
+ NOTE_RENAME | NOTE_REVOKE | NOTE_WRITE,
+ 0, 0);
+ }
+
+ kq = kqueue();
+ if (kq == -1)
+ err(EXIT_FAILURE, "kqueue");
+
+ while ((line = fgetln(stdin, &len)) != NULL) {
+ int ec, nev;
+ struct timespec to;
+
+ to.tv_sec = 0;
+ to.tv_nsec = 100000;
+
+ (void)kevent(kq, changes, argc, &event, 1, &to);
+
+ assert(len > 0);
+ assert(line[len - 1] == '\n');
+ line[len - 1] = '\0';
+ ec = system(line);
+ if (ec != EXIT_SUCCESS)
+ errx(ec, "%s returned %d", line, ec);
+
+ do {
+ nev = kevent(kq, changes, argc, &event, 1, &to);
+ if (nev == -1)
+ err(EXIT_FAILURE, "kevent");
+ else if (nev > 0) {
+ for (i = 0; i < argc; i++)
+ if (event.ident == changes[i].ident)
+ break;
+
+ if (event.fflags & NOTE_ATTRIB)
+ printf("%s - NOTE_ATTRIB\n", argv[i]);
+ if (event.fflags & NOTE_DELETE)
+ printf("%s - NOTE_DELETE\n", argv[i]);
+ if (event.fflags & NOTE_EXTEND)
+ printf("%s - NOTE_EXTEND\n", argv[i]);
+ if (event.fflags & NOTE_LINK)
+ printf("%s - NOTE_LINK\n", argv[i]);
+ if (event.fflags & NOTE_RENAME)
+ printf("%s - NOTE_RENAME\n", argv[i]);
+ if (event.fflags & NOTE_REVOKE)
+ printf("%s - NOTE_REVOKE\n", argv[i]);
+ if (event.fflags & NOTE_WRITE)
+ printf("%s - NOTE_WRITE\n", argv[i]);
+ }
+ } while (nev > 0);
+ }
+
+ for (i = 0; i < argc; i++)
+ close(changes[i].ident);
+ free(changes);
+
+ return EXIT_SUCCESS;
+}
+
+/* --------------------------------------------------------------------- */
+
+int
+rename_main(int argc, char **argv)
+{
+
+ if (argc < 3)
+ return EXIT_FAILURE;
+
+ return rename(argv[1], argv[2]);
+}
+
+/* --------------------------------------------------------------------- */
+
+int
+sockets_main(int argc, char **argv)
+{
+ int error, fd;
+ struct sockaddr_un addr;
+
+ if (argc < 2)
+ return EXIT_FAILURE;
+
+ fd = socket(PF_LOCAL, SOCK_STREAM, 0);
+ if (fd == -1) {
+ perror("socket");
+ return EXIT_FAILURE;
+ }
+
+ (void)strlcpy(addr.sun_path, argv[1], sizeof(addr.sun_path));
+ addr.sun_family = PF_UNIX;
+
+ error = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
+ if (error == -1) {
+ perror("connect");
+ return EXIT_FAILURE;
+ }
+
+ close(fd);
+
+ return EXIT_SUCCESS;
+}
+
+/* --------------------------------------------------------------------- */
+
+int
+statvfs_main(int argc, char **argv)
+{
+ int error;
+ struct statfs buf;
+
+ if (argc < 2)
+ return EXIT_FAILURE;
+
+ memset(&buf, 0, sizeof(buf));
+ buf.f_version = STATFS_VERSION;
+ error = statfs(argv[1], &buf);
+ if (error != 0) {
+ perror("statvfs");
+ return EXIT_FAILURE;
+ }
+
+ (void)printf("f_bsize=%llu\n", buf.f_bsize);
+ (void)printf("f_blocks=%llu\n", buf.f_blocks);
+ (void)printf("f_bfree=%llu\n", buf.f_bfree);
+ (void)printf("f_files=%llu\n", buf.f_files);
+
+ return EXIT_SUCCESS;
+}
+
+/* --------------------------------------------------------------------- */
+
+int
+main(int argc, char **argv)
+{
+ int error;
+
+ if (argc < 2)
+ return EXIT_FAILURE;
+
+ argc -= 1;
+ argv += 1;
+
+ if (strcmp(argv[0], "getfh") == 0)
+ error = getfh_main(argc, argv);
+ else if (strcmp(argv[0], "kqueue") == 0)
+ error = kqueue_main(argc, argv);
+ else if (strcmp(argv[0], "rename") == 0)
+ error = rename_main(argc, argv);
+ else if (strcmp(argv[0], "sockets") == 0)
+ error = sockets_main(argc, argv);
+ else if (strcmp(argv[0], "statvfs") == 0)
+ error = statvfs_main(argc, argv);
+ else
+ error = EXIT_FAILURE;
+
+ return error;
+}
diff --git a/tools/regression/tmpfs/t_create b/tools/regression/tmpfs/t_create
new file mode 100644
index 0000000..39ea4f4
--- /dev/null
+++ b/tools/regression/tmpfs/t_create
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# $NetBSD: t_create,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the create operation works.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Files can be created"
+ umask 022 || die
+ test -f a && die
+ touch a || die
+ test -f a || die
+ test_name "New files get proper attributes"
+ eval $(stat -s . | sed -e 's|st_|dst_|g')
+ eval $(stat -s a)
+ test ${st_flags} -eq 0 || die
+ test ${st_size} -eq 0 || die
+ test ${st_uid} -eq $(id -u) || die
+ test ${st_gid} -eq ${dst_gid} || die
+ test ${st_mode} = 0100644 || die
+
+ if [ -n "${Unprived_User}" ]; then
+ test_name "New files by users get proper attributes"
+
+ mkdir b c || die
+
+ chown ${Unprived_User}:0 b || die
+ eval $(stat -s b)
+ [ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
+ [ ${st_gid} -eq 0 ] || die
+
+ chown ${Unprived_User}:100 c || die
+ eval $(stat -s c)
+ [ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
+ [ ${st_gid} -eq 100 ] || die
+
+ su ${Unprived_User} -c 'touch b/a'
+ eval $(stat -s b/a)
+ [ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
+ [ ${st_gid} -eq 0 ] || die
+
+ su ${Unprived_User} -c 'touch c/a'
+ eval $(stat -s c/a)
+ [ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
+ [ ${st_gid} -eq 100 ] || die
+ fi
+
+ mkdir dir || die
+ echo 'touch dir/a' | kqueue_monitor 1 dir || die
+ test_name "Creating a file raises NOTE_WRITE on the parent directory"
+ kqueue_check dir NOTE_WRITE || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_dots b/tools/regression/tmpfs/t_dots
new file mode 100644
index 0000000..80d721a
--- /dev/null
+++ b/tools/regression/tmpfs/t_dots
@@ -0,0 +1,63 @@
+#!/bin/sh
+#
+# $NetBSD: t_dots,v 1.4 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that '.' and '..' lookups work.
+#
+
+test_run() {
+ test_mount
+
+ test_name "'.' and '..' entries of a directory work."
+ mkdir a
+ test -d ./a || die
+ test -d a/../a || die
+
+ test_name "'.' and '..' entries of nested directories work."
+ mkdir a/b
+ test -d a/b/../b || die
+ test -d a/b/../../a || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_exec b/tools/regression/tmpfs/t_exec
new file mode 100644
index 0000000..cb1e239
--- /dev/null
+++ b/tools/regression/tmpfs/t_exec
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+# $NetBSD: t_exec,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that binary files can be executed from within the file system
+# (i.e., whether getpages works).
+#
+
+test_run() {
+ test_mount
+
+ test_name "Copy of existing binary program"
+ cp /bin/cp . || die
+ test_name "Data written is correct"
+ [ $(md5 cp | cut -d ' ' -f 4) = $(md5 /bin/cp | cut -d ' ' -f 4) ] || \
+ die
+ test_name "Execution of binary program"
+ ./cp cp foo || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_id_gen b/tools/regression/tmpfs/t_id_gen
new file mode 100644
index 0000000..c478330
--- /dev/null
+++ b/tools/regression/tmpfs/t_id_gen
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# $NetBSD: t_id_gen,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that node identifiers and generation numbers are assigned
+# correctly.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Creation of directory"
+ mkdir a || die
+ test_name "Node ID should be 3"
+ eval $(stat -s a | sed -e 's|st_|ost_|g') || die
+ ofhsum=$(${Src_Dir}/h_tools getfh a | md5) || die
+ [ ${ost_ino} -eq 3 ] || die
+
+ test_name "Deletion of directory"
+ rmdir a || die
+
+ test_name "Creation of directory (reuse node)"
+ mkdir b || die
+ test_name "Node ID should be 3"
+ eval $(stat -s b) || die
+ fhsum=$(${Src_Dir}/h_tools getfh b | md5) || die
+ [ ${st_ino} -eq 3 ] || die
+
+ #Failed Case
+ #test_name "File handle is different (thanks to generation)"
+ #[ ${ofhsum} != ${fhsum} ] || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_link b/tools/regression/tmpfs/t_link
new file mode 100644
index 0000000..bf57ec5
--- /dev/null
+++ b/tools/regression/tmpfs/t_link
@@ -0,0 +1,108 @@
+#!/bin/sh
+#
+# $NetBSD: t_link,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the link operation works.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Link operation works"
+ touch a || die
+ touch z || die
+ eval $(stat -s a | sed -e 's|st_|sta_|g')
+ eval $(stat -s z | sed -e 's|st_|stz_|g')
+ test ${sta_ino} != ${stz_ino} || die
+ test ${sta_nlink} -eq 1 || die
+ ln a b || die
+ test_name "Link count is correct after links are created"
+ eval $(stat -s a | sed -e 's|st_|sta_|g')
+ eval $(stat -s b | sed -e 's|st_|stb_|g')
+ test ${sta_ino} = ${stb_ino} || die
+ test ${sta_nlink} -eq 2 || die
+ test ${stb_nlink} -eq 2 || die
+ test_name "Link count is correct after links are deleted"
+ rm a || die
+ eval $(stat -s b | sed -e 's|st_|stb_|g')
+ test ${stb_nlink} -eq 1 || die
+ rm b || die
+
+ test_name "Link operation works in subdirectories"
+ touch a || die
+ mkdir c || die
+ ln a c/b || die
+ test_name "Link count is correct after links are created"
+ eval $(stat -s a | sed -e 's|st_|sta_|g')
+ eval $(stat -s c/b | sed -e 's|st_|stb_|g')
+ test ${sta_ino} = ${stb_ino} || die
+ test ${sta_nlink} -eq 2 || die
+ test ${stb_nlink} -eq 2 || die
+ test_name "Link count is correct after links are deleted"
+ rm a || die
+ eval $(stat -s c/b | sed -e 's|st_|stb_|g')
+ test ${stb_nlink} -eq 1 || die
+ rm c/b || die
+ rmdir c || die
+
+ mkdir dir || die
+ touch dir/a || die
+ echo 'ln dir/a dir/b' | kqueue_monitor 2 dir dir/a || die
+ test_name "Creating a link raises NOTE_LINK on the source file"
+ kqueue_check dir/a NOTE_LINK || die
+ test_name "Creating a link raises NOTE_WRITE on the parent directory"
+ kqueue_check dir NOTE_WRITE || die
+
+ echo 'rm dir/a' | kqueue_monitor 2 dir dir/b || die
+ # XXX According to the (short) kqueue(2) documentation, the following
+ # should raise a NOTE_LINK but FFS raises a NOTE_DELETE...
+ test_name "Deleting a link raises NOTE_DELETE on one other link"
+ kqueue_check dir/b NOTE_DELETE || die
+ test_name "Deleting a link raises NOTE_WRITE on the parent directory"
+ kqueue_check dir NOTE_WRITE || die
+ rm dir/b || die
+ rmdir dir || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_mkdir b/tools/regression/tmpfs/t_mkdir
new file mode 100644
index 0000000..7a91961
--- /dev/null
+++ b/tools/regression/tmpfs/t_mkdir
@@ -0,0 +1,110 @@
+#!/bin/sh
+#
+# $NetBSD: t_mkdir,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that mkdir works by creating some nested directories. It also
+# checks, in part, the lookup operation.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Directories can be created"
+ mkdir a
+ test_name "Link count is updated after directory creation"
+ eval $(stat -s ${Work_Dir})
+ [ ${st_nlink} = 3 ] || die
+
+ test_name "Create many directories"
+ for d in $(jot 100); do
+ test -d ${d} && die
+ mkdir ${d}
+ test -d ${d} || die
+ done
+ eval $(stat -s ${Work_Dir})
+ [ ${st_nlink} = 103 ] || die
+
+ test_name "Nested directories can be created"
+ test -d a/b/c/d/e && die
+ mkdir -p a/b/c/d/e || die
+ test -d a/b/c/d/e || die
+
+ if [ -n "${Unprived_User}" ]; then
+ test_name "New directories by users get proper attributes"
+ mkdir b c || die
+
+ chown ${Unprived_User}:0 b || die
+ eval $(stat -s b)
+ [ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
+ [ ${st_gid} -eq 0 ] || die
+
+ chown ${Unprived_User}:100 c || die
+ eval $(stat -s c)
+ [ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
+ [ ${st_gid} -eq 100 ] || die
+
+ su ${Unprived_User} -c 'mkdir b/a'
+ eval $(stat -s b/a)
+ [ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
+ [ ${st_gid} -eq 0 ] || die
+
+ su ${Unprived_User} -c 'mkdir c/a'
+ eval $(stat -s c/a)
+ [ ${st_uid} -eq $(id -u ${Unprived_User}) ] || die
+ [ ${st_gid} -eq 100 ] || die
+ fi
+
+ mkdir dir || die
+ echo 'mkdir dir/a' | kqueue_monitor 2 dir || die
+ test_name "Creating a directory raises NOTE_LINK on the parent" \
+ "directory"
+ kqueue_check dir NOTE_LINK || die
+ test_name "Creating a directory raises NOTE_WRITE on the parent" \
+ "directory"
+ kqueue_check dir NOTE_WRITE || die
+ rmdir dir/a || die
+ rmdir dir || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_mount b/tools/regression/tmpfs/t_mount
new file mode 100644
index 0000000..cad7e70
--- /dev/null
+++ b/tools/regression/tmpfs/t_mount
@@ -0,0 +1,85 @@
+#!/bin/sh
+#
+# $NetBSD: t_mount,v 1.7 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that an execution of mount and umount works correctly without
+# causing errors and that the root node gets correct attributes.
+# Also verifies command line parsing from mount_tmpfs.
+#
+
+test_run() {
+ test_name "File-system can be mounted"
+ test_mount
+ test_name "Root directory has two links"
+ eval $(stat -s ${Work_Dir})
+ [ ${st_nlink} = 2 ] || die
+ test_name "File-system can be unmounted"
+ test_unmount
+
+ test_name "File-system mount options work"
+ test_mount -o ro
+ mount | grep ${Work_Dir} | grep -q read-only || die
+ test_unmount
+
+ test_name "Root directory attributes are set correctly"
+ test_mount -o "uid=1000,gid=100,mode=755"
+ eval $(stat -s ${Work_Dir})
+ [ ${st_uid} = 1000 ] || die
+ [ ${st_gid} = 100 ] || die
+ [ ${st_mode} = 040755 ] || die
+ test_unmount
+
+ test_name "Negative values are correctly handled"
+ test_mount -o "size=-10"
+ test_unmount
+
+ test_name "Extremely large values are correctly handled"
+ test_mount -o size=9223372036854775807
+ test_unmount
+ mount -t tmpfs -o size=9223372036854775808 tmpfs ${Work_Dir} \
+ 2>/dev/null && die
+ mount -t tmpfs -o size=9223372036854775808g tmpfs ${Work_Dir} \
+ 2>/dev/null && die
+ rmdir ${Work_Dir}
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_pipes b/tools/regression/tmpfs/t_pipes
new file mode 100644
index 0000000..00da567
--- /dev/null
+++ b/tools/regression/tmpfs/t_pipes
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+# $NetBSD: t_pipes,v 1.5 2006/12/07 10:00:39 pooka Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that pipes created inside tmpfs work.
+#
+
+test_run() {
+ test_mount
+
+ umask 022 || die
+
+ test_name "Creation of named pipe"
+ mkfifo pipe || die
+
+ test_name "Writing to pipe and waiting for response"
+ echo -n foo >pipe &
+ [ "$(cat pipe)" = foo ] || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_read_write b/tools/regression/tmpfs/t_read_write
new file mode 100644
index 0000000..42759e0
--- /dev/null
+++ b/tools/regression/tmpfs/t_read_write
@@ -0,0 +1,81 @@
+#!/bin/sh
+#
+# $NetBSD: t_read_write,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the read and write operations work.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Write to new file works"
+ echo foo >a || die
+ test_name "Data written is correct"
+ [ $(md5 a | cut -d ' ' -f 4) = d3b07384d113edec49eaa6238ad5ff00 ] || die
+
+ test_name "Append to existing file works"
+ echo bar >>a || die
+ test_name "Data written is correct"
+ [ $(md5 a | cut -d ' ' -f 4) = f47c75614087a8dd938ba4acff252494 ] || die
+
+ test_name "Write to long file (bigger than a page) works"
+ jot 10000 >b || die
+ test_name "Data written is correct"
+ [ $(md5 b | cut -d ' ' -f 4) = 72d4ff27a28afbc066d5804999d5a504 ] || die
+
+ dd if=/dev/zero of=c bs=1k count=10 >/dev/null 2>&1 || die
+ echo 'dd if=/dev/zero of=c seek=2 bs=1k count=1 conv=notrunc' \
+ '>/dev/null 2>&1' | kqueue_monitor 1 c || die
+ test_name "Writing to a file raises NOTE_WRITE"
+ kqueue_check c NOTE_WRITE || die
+
+ echo foo >d
+ echo 'echo bar >>d' | kqueue_monitor 2 d || die
+ test_name "Appending to a file raises NOTE_EXTEND"
+ kqueue_check d NOTE_EXTEND || die
+ test_name "Appending to a file raises NOTE_WRITE"
+ kqueue_check d NOTE_WRITE || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_readdir b/tools/regression/tmpfs/t_readdir
new file mode 100644
index 0000000..73cb578
--- /dev/null
+++ b/tools/regression/tmpfs/t_readdir
@@ -0,0 +1,93 @@
+#!/bin/sh
+#
+# $NetBSD: t_readdir,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the readdir operation works.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Directory has '.' and '..' entries"
+ /bin/ls -a | grep '^\.$' >/dev/null || die
+ /bin/ls -a | grep '^\..$' >/dev/null || die
+
+ test_name "Creation of files of all possible types"
+ mkdir dir || die
+ touch reg || die
+ ln -s reg lnk || die
+ mknod b blk 0 0 || die
+ mknod c chr 0 0 || die
+ mkfifo fifo || die
+ ${Src_Dir}/h_tools sockets sock || die
+
+ test_name "Read of directory"
+ ls >/dev/null || die
+ rm -rf * || die
+
+ # Catch a bug caused by incorrect invalidation of readdir caching
+ # variables.
+ test_name "Populate directory"
+ touch $(jot 10) || die
+ test_name "Clean it"
+ rm * || die
+ test_name "Repopulate directory"
+ touch $(jot 20) || die
+ test_name "Listing should return all entries"
+ ls >/dev/null || die
+
+ test_name "Creation of many files"
+ mkdir a || die
+ for f in $(jot 500); do
+ touch a/$f || die
+ done
+
+ test_name "Removal of all files using a wildcard"
+ rm a/* || die
+
+ test_name "Removal of should-be-empty directory"
+ rmdir a || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_remove b/tools/regression/tmpfs/t_remove
new file mode 100644
index 0000000..80b8986
--- /dev/null
+++ b/tools/regression/tmpfs/t_remove
@@ -0,0 +1,83 @@
+#!/bin/sh
+#
+# $NetBSD: t_remove,v 1.7.2.1 2007/01/04 20:29:50 bouyer Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the remove operation works.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Files can be removed"
+ test -f a && die
+ touch a || die
+ test -f a || die
+ rm a || die
+ test -f a && die
+
+ test_name "Files with uchg flags cannot be removed"
+ touch a || die
+ chflags uchg a || die
+ #Not valid case in FreeBSD
+ #rm -f a 2>/dev/null && die
+ chflags nouchg a || die
+ rm a || die
+ test -f a && die
+
+ test_name "The node . cannot be unlinked"
+ mkdir a || die
+ unlink a/. 2>/dev/null && die
+ rmdir a
+
+ mkdir dir || die
+ touch dir/a || die
+ echo 'rm dir/a' | kqueue_monitor 2 dir dir/a || die
+ test_name "Deleting a file raises NOTE_DELETE on it"
+ kqueue_check dir/a NOTE_DELETE || die
+ test_name "Deleting a file raises NOTE_WRITE on the parent directory"
+ kqueue_check dir NOTE_WRITE || die
+ rmdir dir || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_rename b/tools/regression/tmpfs/t_rename
new file mode 100644
index 0000000..867a393
--- /dev/null
+++ b/tools/regression/tmpfs/t_rename
@@ -0,0 +1,150 @@
+#!/bin/sh
+#
+# $NetBSD: t_rename,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the rename operation works (either by renaming entries or
+# by moving them).
+#
+
+test_run() {
+ test_mount
+
+ test_name "'.' and '..' entries cannot be renamed"
+ mkdir a || die
+ mv a/. c 2>/dev/null && die
+ mv a/.. c 2>/dev/null && die
+ rmdir a || die
+
+ test_name "Cross device renames do not work"
+ mkdir a || die
+ ${Src_Dir}/h_tools rename a /var/tmp/a && die
+ rmdir a || die
+
+ test_name "Directories can be renamed"
+ mkdir a || die
+ mv a c || die
+ test -d a && die
+ test -d c || die
+ rmdir c || die
+
+ test_name "The '..' entry is updated after moves"
+ mkdir a || die
+ mkdir b || die
+ mv b a || die
+ test -d a/b/../b || die
+ test -d a/b/../../a || die
+ eval $(stat -s a/b)
+ [ ${st_nlink} = 2 ] || die
+ eval $(stat -s a)
+ [ ${st_nlink} = 3 ] || die
+ rmdir a/b || die
+ rmdir a || die
+
+ test_name "The '..' entry is correct after renames"
+ mkdir a || die
+ mkdir b || die
+ mv b a || die
+ mv a c || die
+ test -d c/b/../b || die
+ test -d c/b/../../c || die
+ rmdir c/b || die
+ rmdir c || die
+
+ test_name "The '..' entry is correct after multiple moves"
+ mkdir a || die
+ mkdir b || die
+ mv b a || die
+ mv a c || die
+ mv c/b d || die
+ test -d d/../c || die
+ rmdir d || die
+ rmdir c || die
+
+ test_name "Rename works if the target file exists"
+ touch a || die
+ touch b || die
+ mv a b || die
+ test -f a && die
+ test -f b || die
+ rm b
+
+ mkdir dir || die
+ touch dir/a
+ echo 'mv dir/a dir/b' | kqueue_monitor 2 dir dir/a || die
+ test_name "Renaming a file raises NOTE_RENAME on the old file"
+ kqueue_check dir/a NOTE_RENAME || die
+ test_name "Renaming a file raises NOTE_WRITE on the parent directory"
+ kqueue_check dir NOTE_WRITE || die
+ rm dir/b || die
+ rmdir dir || die
+
+ mkdir dir || die
+ touch dir/a
+ touch dir/b
+ echo 'mv dir/a dir/b' | kqueue_monitor 3 dir dir/a dir/b || die
+ test_name "Renaming a file raises NOTE_RENAME on the old file"
+ kqueue_check dir/a NOTE_RENAME || die
+ test_name "Renaming a file raises NOTE_WRITE on the parent directory"
+ kqueue_check dir NOTE_WRITE || die
+ test_name "Renaming a file raises NOTE_DELETE on the target file"
+ kqueue_check dir/b NOTE_DELETE || die
+ rm dir/b || die
+ rmdir dir || die
+
+ mkdir dir1 || die
+ mkdir dir2 || die
+ touch dir1/a
+ echo 'mv dir1/a dir2/a' | kqueue_monitor 3 dir1 dir1/a dir2 || die
+ test_name "Moving a file raises NOTE_RENAME on the old file"
+ kqueue_check dir1/a NOTE_RENAME || die
+ test_name "Moving a file raises NOTE_WRITE on the source directory"
+ kqueue_check dir1 NOTE_WRITE || die
+ test_name "Moving a file raises NOTE_WRITE on the target directory"
+ kqueue_check dir2 NOTE_WRITE || die
+ rm dir2/a || die
+ rmdir dir1 || die
+ rmdir dir2 || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_rmdir b/tools/regression/tmpfs/t_rmdir
new file mode 100644
index 0000000..0cb92d8
--- /dev/null
+++ b/tools/regression/tmpfs/t_rmdir
@@ -0,0 +1,114 @@
+#!/bin/sh
+#
+# $NetBSD: t_rmdir,v 1.6 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that rmdir works by creating and removing directories. Also
+# checks multiple error conditions.
+#
+
+test_run() {
+ test_mount
+
+ test_name "The mount point cannot be removed"
+ rmdir 2>/dev/null && die
+
+ test_name "Non-existing directories cannot be removed"
+ rmdir non-existent 2>/dev/null && die
+
+ test_name "Removal of a single directory works"
+ mkdir a || die
+ eval $(stat -s ${Work_Dir})
+ [ ${st_nlink} = 3 ] || die
+ rmdir a || die
+ eval $(stat -s ${Work_Dir})
+ [ ${st_nlink} = 2 ] || die
+
+ test_name "Removal of nested directories works"
+ mkdir -p a/b/c || die
+ rmdir a/b/c || die
+ rmdir a/b || die
+ rmdir a || die
+
+ test_name "'.' and '..' directories cannot be removed"
+ mkdir a || die
+ rmdir a/. 2>/dev/null && die
+ rmdir a/.. 2>/dev/null && die
+ rmdir a || die
+
+ test_name "Non-empty directories cannot be removed"
+ mkdir a || die
+ mkdir a/b || die
+ mkdir a/c || die
+ rmdir a 2>/dev/null && die
+ rmdir a/b || die
+ rmdir a/c || die
+ rmdir a || die
+
+ test_name "Root directory has two links after all removes"
+ eval $(stat -s ${Work_Dir})
+ [ ${st_nlink} = 2 ] || die
+
+ test_name "Removal of current directory"
+ mkdir a || die
+ # Catch a bug that would panic the system when accessing the
+ # current directory after being deleted: vop_open cannot assume
+ # that open files are still linked to a directory.
+ ( cd a && rmdir ../a && ls >/dev/null 2>&1 ) && die
+ test -e a && die
+
+ mkdir dir || die
+ mkdir dir/a || die
+ echo 'rmdir dir/a' | kqueue_monitor 3 dir dir/a || die
+ test_name "Deleting a directory raises NOTE_DELETE on it"
+ kqueue_check dir/a NOTE_DELETE || die
+ test_name "Deleting a directory raises NOTE_LINK on the parent" \
+ "directory"
+ kqueue_check dir NOTE_LINK || die
+ test_name "Deleting a directory raises NOTE_WRITE on the parent" \
+ "directory"
+ kqueue_check dir NOTE_WRITE || die
+ rmdir dir || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_setattr b/tools/regression/tmpfs/t_setattr
new file mode 100644
index 0000000..b38ad88e
--- /dev/null
+++ b/tools/regression/tmpfs/t_setattr
@@ -0,0 +1,115 @@
+#!/bin/sh
+#
+# $NetBSD: t_setattr,v 1.6 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the setattr vnode operation works, using several commands
+# that require this function.
+#
+
+test_run() {
+ test_mount
+
+ test_name "File owner can be changed on its own"
+ mkdir own || die
+ eval $(stat -s own | sed -e 's|st_|ost_|g')
+ chown 1234 own || die
+ eval $(stat -s own)
+ [ ${st_uid} -eq 1234 ] || die
+ [ ${st_gid} -eq ${ost_gid} ] || die
+
+ mkdir ownq || die
+ echo 'chown 1234 ownq' | kqueue_monitor 1 ownq || die
+ test_name "Changing a file's owner raises NOTE_ATTRIB on it"
+ kqueue_check ownq NOTE_ATTRIB || die
+
+ test_name "File group can be changed on its own"
+ mkdir grp || die
+ eval $(stat -s grp | sed -e 's|st_|ost_|g')
+ chgrp 5678 grp || die
+ eval $(stat -s grp)
+ [ ${st_uid} -eq ${ost_uid} ] || die
+ [ ${st_gid} -eq 5678 ] || die
+
+ mkdir grpq || die
+ echo 'chgrp 1234 grpq' | kqueue_monitor 1 grpq || die
+ test_name "Changing a file's group raises NOTE_ATTRIB on it"
+ kqueue_check grpq NOTE_ATTRIB || die
+
+ test_name "File owner and group can be changed at once"
+ mkdir owngrp || die
+ chown 1234:5678 owngrp || die
+ eval $(stat -s owngrp)
+ [ ${st_uid} -eq 1234 ] || die
+ [ ${st_gid} -eq 5678 ] || die
+
+ mkdir owngrpp || die
+ echo 'chown 1234:5678 owngrpp' | kqueue_monitor 1 owngrpp || die
+ test_name "Changing a file's owner and group raises NOTE_ATTRIB on it"
+ kqueue_check owngrpp NOTE_ATTRIB || die
+
+ test_name "File mode can be changed"
+ mkdir mode || die
+ chmod 0000 mode || die
+ eval $(stat -s mode)
+ [ ${st_mode} -eq 40000 ] || die
+
+ mkdir modeq || die
+ echo 'chmod 0000 modeq' | kqueue_monitor 1 modeq || die
+ test_name "Updating a file's mode raises NOTE_ATTRIB on it"
+ kqueue_check modeq NOTE_ATTRIB || die
+
+ test_name "File times can be changed"
+ mkdir times || die
+ TZ=GMT touch -t 200501010101 times || die
+ eval $(stat -s times)
+ [ ${st_atime} = ${st_mtime} ] || die
+ [ ${st_atime} = 1104541260 ] || die
+
+ mkdir timesq || die
+ echo 'touch timesq' | kqueue_monitor 1 timesq || die
+ test_name "Updating a file's times raises NOTE_ATTRIB on it"
+ kqueue_check timesq NOTE_ATTRIB || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_sizes b/tools/regression/tmpfs/t_sizes
new file mode 100644
index 0000000..890ac15
--- /dev/null
+++ b/tools/regression/tmpfs/t_sizes
@@ -0,0 +1,99 @@
+#!/bin/sh
+#
+# $NetBSD: t_sizes,v 1.6 2007/03/11 10:09:17 pooka Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the file system controls memory usage correctly.
+#
+
+test_run() {
+ test_mount -o size=10485760
+
+ pagesize=$(sysctl hw.pagesize | cut -d ' ' -f 2)
+
+ test_name "Get status of clean filesystem"
+ eval $(${Src_Dir}/h_tools statvfs . | sed -e 's|^f_|cf_|')
+ cf_bused=$((${cf_blocks} - ${cf_bfree}))
+
+ test_name "Creation of small file"
+ echo a >a || die
+ test_name "statvfs(2) reports correct block accounting"
+ eval $(${Src_Dir}/h_tools statvfs .)
+ f_bused=$((${f_blocks} - ${f_bfree}))
+ [ ${f_bused} -gt 1 ] || die
+ rm a || die
+
+ test_name "Creation of big file"
+ dd if=/dev/zero of=a bs=1m count=5 >/dev/null 2>&1 || die
+ test_name "statvfs(2) reports correct block accounting"
+ eval $(${Src_Dir}/h_tools statvfs .)
+ f_bused=$((${f_blocks} - ${f_bfree}))
+ [ ${f_bused} -ne ${cf_bused} ] || die
+ [ ${f_bused} -gt $((5 * 1024 * 1024 / ${pagesize})) ] || die
+ of_bused=${f_bused}
+ rm a || die
+ eval $(${Src_Dir}/h_tools statvfs .)
+ f_bused=$((${f_blocks} - ${f_bfree}))
+ [ ${f_bused} -lt ${of_bused} ] || die
+
+ test_name "Creation of big file that overflows the filesystem"
+ of_bused=${f_bused}
+ dd if=/dev/zero of=a bs=1m count=15 >/dev/null 2>&1 && die
+ rm a || die
+ test_name "statvfs(2) reports correct block accounting"
+ eval $(${Src_Dir}/h_tools statvfs .)
+ f_bused=$((${f_blocks} - ${f_bfree}))
+ [ ${f_bused} -ge ${of_bused} -a ${f_bused} -le $((${of_bused} + 1)) ] \
+ || die
+
+ test_name "Write to middle of a file does not change size"
+ dd if=/dev/zero of=a bs=1024 count=10 >/dev/null 2>&1 || die
+ sync
+ dd if=/dev/zero of=a bs=1024 conv=notrunc seek=1 count=1 \
+ >/dev/null 2>&1 || die
+ sync
+ eval $(stat -s a)
+ [ ${st_size} -eq 10240 ] || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_sockets b/tools/regression/tmpfs/t_sockets
new file mode 100644
index 0000000..6d8e58d
--- /dev/null
+++ b/tools/regression/tmpfs/t_sockets
@@ -0,0 +1,63 @@
+#!/bin/sh
+#
+# $NetBSD: t_sockets,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that sockets can be created using socket/bind.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Sockets can be created"
+ ${Src_Dir}/h_tools sockets a
+ rm a || die
+
+ mkdir dir || die
+ echo "${Src_Dir}/h_tools sockets dir/a" | kqueue_monitor 1 dir || die
+ test_name "Creating a socket raises NOTE_WRITE on the parent" \
+ "directory"
+ kqueue_check dir NOTE_WRITE || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_statvfs b/tools/regression/tmpfs/t_statvfs
new file mode 100644
index 0000000..937e72d
--- /dev/null
+++ b/tools/regression/tmpfs/t_statvfs
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+# $NetBSD: t_statvfs,v 1.4 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the statvfs system call works properly (returning the
+# correct values) over a tmpfs mount point.
+#
+
+test_run() {
+ test_mount -o size=10485760
+
+ test_name "statvfs(2) returns correct values"
+ pagesize=$(sysctl hw.pagesize | cut -d ' ' -f 2)
+ eval $(${Src_Dir}/h_tools statvfs .)
+ [ ${pagesize} -eq ${f_bsize} ] || die
+ [ $((${f_bsize} * ${f_blocks})) -ge $((10 * 1024 * 1024)) ] || die
+ [ $((${f_bsize} * ${f_blocks})) -le \
+ $((10 * 1024 * 1024 + ${pagesize})) ] || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_symlink b/tools/regression/tmpfs/t_symlink
new file mode 100644
index 0000000..6a5638a
--- /dev/null
+++ b/tools/regression/tmpfs/t_symlink
@@ -0,0 +1,88 @@
+#!/bin/sh
+#
+# $NetBSD: t_symlink,v 1.6 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the symlink and readlink operations work.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Creation of an empty file"
+ touch a || die
+ test_name "Creation of a symlink pointing to it"
+ ln -s a b || die
+ test_name "Symlink points to correct file"
+ [ $(md5 b | cut -d ' ' -f 4) = d41d8cd98f00b204e9800998ecf8427e ] || die
+
+ test_name "Changing original file"
+ echo foo >a || die
+ test_name "Symlink reflects the changes"
+ [ $(md5 b | cut -d ' ' -f 4) = d3b07384d113edec49eaa6238ad5ff00 ] || die
+
+ test_name "Creation of symlink to a known system file"
+ ln -s /bin/cp cp || die
+ test_name "Trying to see if it works"
+ ./cp b c || die
+ [ -f c ] || die
+
+ test_name "Symlinking directories works"
+ mkdir d || die
+ [ -f d/foo ] && die
+ [ -f e/foo ] && die
+ ln -s d e || die
+ touch d/foo || die
+ [ -f d/foo ] || die
+ [ -f e/foo ] || die
+
+ mkdir dir || die
+ echo 'ln -s non-existent dir/a' | kqueue_monitor 1 dir || die
+ test_name "Creating a symlink raises NOTE_WRITE on the parent" \
+ "directory"
+ kqueue_check dir NOTE_WRITE || die
+ rm dir/a || die
+ rmdir dir || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_times b/tools/regression/tmpfs/t_times
new file mode 100644
index 0000000..06055b9
--- /dev/null
+++ b/tools/regression/tmpfs/t_times
@@ -0,0 +1,114 @@
+#!/bin/sh
+#
+# $NetBSD: t_times,v 1.6 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that node times are properly handled.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Creation of empty file"
+ touch a || die
+ eval $(stat -s a | sed -e 's|st_|ost_|g') || die
+ [ ${ost_birthtime} -eq ${ost_atime} ] || die
+ [ ${ost_birthtime} -eq ${ost_ctime} ] || die
+ [ ${ost_birthtime} -eq ${ost_mtime} ] || die
+
+ test_name "Read of empty file"
+ sleep 1
+ cat a >/dev/null || die
+ eval $(stat -s a) || die
+ [ ${st_atime} -gt ${ost_atime} ] || die
+ [ ${st_ctime} -eq ${ost_ctime} ] || die
+ [ ${st_mtime} -eq ${ost_mtime} ] || die
+
+ test_name "Write to (and extension of) empty file"
+ sleep 1
+ echo foo >a || die
+ eval $(stat -s a) || die
+ [ ${st_atime} -gt ${ost_atime} ] || die
+ [ ${st_ctime} -gt ${ost_ctime} ] || die
+ [ ${st_mtime} -gt ${ost_mtime} ] || die
+
+ test_name "Creation of non-empty file"
+ echo foo >b || die
+ eval $(stat -s b | sed -e 's|st_|ost_|g') || die
+
+ test_name "Read of non-empty file"
+ sleep 1
+ cat b >/dev/null || die
+ eval $(stat -s b) || die
+ [ ${st_atime} -gt ${ost_atime} ] || die
+ [ ${st_ctime} -eq ${ost_ctime} ] || die
+ [ ${st_mtime} -eq ${ost_mtime} ] || die
+
+ test_name "Creation of non-empty file"
+ echo foo >c || die
+ eval $(stat -s c | sed -e 's|st_|ost_|g') || die
+
+ test_name "New link to non-empty file"
+ sleep 1
+ ln c d || die
+ eval $(stat -s c) || die
+ [ ${st_atime} -eq ${ost_atime} ] || die
+ [ ${st_ctime} -gt ${ost_ctime} ] || die
+ [ ${st_mtime} -eq ${ost_mtime} ] || die
+
+ test_name "File renaming does not change times"
+ mkdir e || die
+ echo foo >e/a || die
+ eval $(stat -s e | sed -e 's|st_|dost_|g') || die
+ eval $(stat -s e/a | sed -e 's|st_|ost_|g') || die
+ sleep 1
+ mv e/a e/b || die
+ eval $(stat -s e | sed -e 's|st_|dst_|g') || die
+ eval $(stat -s e/b) || die
+ [ ${st_atime} -eq ${ost_atime} ] || die
+ [ ${st_ctime} -gt ${ost_ctime} ] || die
+ [ ${st_mtime} -eq ${ost_mtime} ] || die
+ [ ${dst_mtime} -gt ${dost_mtime} ] || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_trail_slash b/tools/regression/tmpfs/t_trail_slash
new file mode 100644
index 0000000..028dd21
--- /dev/null
+++ b/tools/regression/tmpfs/t_trail_slash
@@ -0,0 +1,61 @@
+#!/bin/sh
+#
+# $NetBSD: t_trail_slash,v 1.4 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that trailing slashes are not stored in directory names and that
+# they do not cause crashes.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Trailing slashes are not taken into account"
+ mkdir a/ || die
+ touch a/b || die
+ [ -f a/b ] || die
+ rm a/b || die
+ rmdir a/ || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_truncate b/tools/regression/tmpfs/t_truncate
new file mode 100644
index 0000000..c5ff811
--- /dev/null
+++ b/tools/regression/tmpfs/t_truncate
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+# $NetBSD: t_truncate,v 1.4 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that the truncate operations work.
+#
+
+test_run() {
+ test_mount
+
+ test_name "Write to new file works"
+ jot 10000 >a || die
+ test_name "Truncate the file to smaller size works"
+ echo foo >a || die
+ [ $(md5 a | cut -d ' ' -f 4) = d3b07384d113edec49eaa6238ad5ff00 ] || die
+
+ test_name "Truncate to zero size"
+ >a || die
+ test_name "Truncate to zero size, second try"
+ >a || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_vnd b/tools/regression/tmpfs/t_vnd
new file mode 100644
index 0000000..54e51ba
--- /dev/null
+++ b/tools/regression/tmpfs/t_vnd
@@ -0,0 +1,95 @@
+#!/bin/sh
+#
+# $NetBSD: t_vnd,v 1.1 2006/11/09 15:25:37 jmmv Exp $
+#
+# Copyright (c) 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that vnd works with files stored in tmpfs.
+#
+
+die_mounted() {
+ umount mnt
+ die_configured
+}
+
+die_configured() {
+ mdconfig -d -u 3
+ die
+}
+
+test_run() {
+ test_mount
+
+ test_name "Creation of disk image"
+ dd if=/dev/zero of=disk.img bs=1m count=10 >/dev/null 2>&1 || die
+
+ test_name "Configuration of vnd"
+ mdconfig -a -f disk.img -u 3 -x 32 -y 2 ||die
+
+ test_name "Labelling the md"
+ bsdlabel -m i386 -w /dev/md3 || die_configured
+
+ test_name "Formatting of disk image"
+ newfs -n -U -m 0 -O 1 /dev/md3a >/dev/null 2>&1 || die_configured
+
+ test_name "Mounting of disk image"
+ mkdir mnt || die
+ mount /dev/md3a mnt || die_configured
+
+ test_name "Creation of several files"
+ for f in $(jot 100); do
+ jot 1000 >mnt/$f || die_mounted
+ done
+
+ test_name "Verification of created files"
+ for f in $(jot 100); do
+ [ $(md5 mnt/$f | cut -d ' ' -f 4) = \
+ 53d025127ae99ab79e8502aae2d9bea6 ] || die_mounted
+ done
+
+ test_name "Unmounting of disk image"
+ umount mnt || die_configured
+
+ test_name "Deconfiguration of vnd"
+ mdconfig -d -u 3 || die
+
+ test_unmount
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/tmpfs/t_vnode_leak b/tools/regression/tmpfs/t_vnode_leak
new file mode 100644
index 0000000..7f6b2f9
--- /dev/null
+++ b/tools/regression/tmpfs/t_vnode_leak
@@ -0,0 +1,63 @@
+#!/bin/sh
+#
+# $NetBSD: t_vnode_leak,v 1.5 2006/11/09 16:20:06 jmmv Exp $
+#
+# Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Julio M. Merino Vidal, developed as part of Google's Summer of Code
+# 2005 program.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#
+# Verifies that vnodes are not leaked and that their reclaim operation works
+# as expected: i.e., when all free vnodes are exhausted, unused ones have to
+# be recycled, which is what the reclaim operation does.
+#
+
+test_run() {
+ oldvnodes=$(sysctl kern.maxvnodes | awk '{ print $2; }')
+ sysctl -w kern.maxvnodes=2000 >/dev/null || die
+
+ test_name "vnodes are properly reclaimed"
+ test_mount -o size=$(((4000 + 2) * 4096))
+ for f in $(jot 4000); do
+ mkdir ${f}
+ done
+ test_unmount
+
+ sysctl -w kern.maxvnodes=${oldvnodes} >/dev/null || die
+}
+
+. ${SUBRDIR}/h_funcs.subr
diff --git a/tools/regression/ufs/uprintf/Makefile b/tools/regression/ufs/uprintf/Makefile
new file mode 100644
index 0000000..c21ad70
--- /dev/null
+++ b/tools/regression/ufs/uprintf/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+PROG= ufs_uprintf
+WARNS?= 3
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/ufs/uprintf/ufs_uprintf.c b/tools/regression/ufs/uprintf/ufs_uprintf.c
new file mode 100644
index 0000000..d9f7125
--- /dev/null
+++ b/tools/regression/ufs/uprintf/ufs_uprintf.c
@@ -0,0 +1,188 @@
+/*-
+ * Copyright (c) 2005 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/*
+ * This regression test attempts to exercise two instances of uprintf(9) in
+ * UFS: (1) when blocks are exhausted, and (2) when inodes are exhausted, in
+ * order to attempt to trigger races in the uprintf(9) code. The test
+ * accepts a pointer to a path -- ideally, a very small UFS partition -- and
+ * then proceeds to fill it in various ways.
+ *
+ * This tool assumes that it is alright to create, and delete, entries in the
+ * directory with names of integer values. Don't run this tool against a
+ * directory that has files with names along those lines if you want to keep
+ * the files.
+ *
+ * Suggested usage is:
+ *
+ * mdconfig -a -t malloc -s 512
+ * newfs /dev/mdX
+ * mount /dev/mdX /mnt
+ * ufs_uprintf /mnt
+ * umount /mnt
+ * mdconfig -d -u X
+ */
+
+#define NUMTRIES 200
+
+/*
+ * Fill up the disk, then generate NUMTRIES additional ENOSPC errors.
+ */
+#define BLOCKSIZE 1024
+#define BLOCKS_FILENAME "0"
+static void
+fill_blocks(void)
+{
+ char block[BLOCKSIZE];
+ ssize_t len;
+ int fd, i;
+
+ fd = open(BLOCKS_FILENAME, O_CREAT | O_TRUNC | O_RDWR, 0600);
+ if (fd < 0)
+ err(-1, "fill_blocks: open(%s)", BLOCKS_FILENAME);
+
+ /*
+ * First step: fill the disk device. Keep extending the file until
+ * we hit our first error, and hope it is ENOSPC.
+ */
+ bzero(block, BLOCKSIZE);
+ errno = 0;
+ while (1) {
+ len = write(fd, block, BLOCKSIZE);
+ if (len < 0)
+ break;
+ if (len != BLOCKSIZE) {
+ warnx("fill_blocks: write(%d) returned %d",
+ BLOCKSIZE, len);
+ close(fd);
+ (void)unlink(BLOCKS_FILENAME);
+ exit(-1);
+ }
+
+ }
+ if (errno != ENOSPC) {
+ warn("fill_blocks: write");
+ close(fd);
+ (void)unlink(BLOCKS_FILENAME);
+ exit(-1);
+ }
+
+ /*
+ * Second step: generate NUMTRIES instances of the error by retrying
+ * the write.
+ */
+ for (i = 0; i < NUMTRIES; i++) {
+ len = write(fd, block, BLOCKSIZE);
+ if (len < 0 && errno != ENOSPC) {
+ warn("fill_blocks: write after ENOSPC");
+ close(fd);
+ (void)unlink(BLOCKS_FILENAME);
+ exit(-1);
+ }
+ }
+
+ close(fd);
+ (void)unlink(BLOCKS_FILENAME);
+}
+
+/*
+ * Create as many entries in the directory as we can, then once we start
+ * hitting ENOSPC, try NUMTRIES additional times. Note that we don't be able
+ * to tell the difference between running out of inodes and running out of
+ * room to extend the directory, so this is just a best effort.
+ */
+static void
+fill_inodes(void)
+{
+ char path[PATH_MAX];
+ int fd, i, max;
+
+ /*
+ * First step, fill the directory.
+ */
+ i = 0;
+ while (1) {
+ snprintf(path, PATH_MAX, "%d", i);
+ fd = open(path, O_CREAT | O_TRUNC | O_RDWR, 0600);
+ if (fd < 0)
+ break;
+ close(fd);
+ i++;
+ }
+ max = i;
+ if (errno != ENOSPC) {
+ warn("fill_inodes: open(%s)", path);
+ goto teardown;
+ }
+
+ for (i = 0; i < NUMTRIES; i++) {
+ fd = open(path, O_CREAT | O_TRUNC | O_RDWR, 0600);
+ if (fd < 0 && errno != ENOSPC) {
+ warn("fill_inodes: open(%s) after ENOSPC", path);
+ goto teardown;
+ }
+ if (fd >= 0) {
+ warnx("fill_inodes: open(%s) after ENOSPC returned "
+ " %d", path, fd);
+ close(fd);
+ goto teardown;
+ }
+ }
+
+teardown:
+ for (i = 0; i < max; i++) {
+ snprintf(path, PATH_MAX, "%d", i);
+ (void)unlink(path);
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+
+ if (argc != 2)
+ err(-1, "usage: ufs_uprintf /non_optional_path");
+
+ if (chdir(argv[1]) < 0)
+ err(-1, "chdir(%s)", argv[1]);
+
+ fill_blocks();
+
+ fill_inodes();
+
+ return (0);
+}
diff --git a/tools/regression/usr.bin/Makefile b/tools/regression/usr.bin/Makefile
new file mode 100644
index 0000000..d577a04
--- /dev/null
+++ b/tools/regression/usr.bin/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR= calendar file2c join jot m4 printf sed uudecode uuencode xargs lastcomm
+
+.include <bsd.subdir.mk>
diff --git a/tools/regression/usr.bin/calendar/Makefile b/tools/regression/usr.bin/calendar/Makefile
new file mode 100644
index 0000000..b937d41
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}
diff --git a/tools/regression/usr.bin/calendar/calendar.calibrate b/tools/regression/usr.bin/calendar/calendar.calibrate
new file mode 100644
index 0000000..28e7e4a
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/calendar.calibrate
@@ -0,0 +1,374 @@
+/*
+ * Calibration calendar for calendar(1)
+ *
+ * $FreeBSD$
+ */
+
+LANG=C
+
+01/01 jan 1
+01/02 jan 2
+01/03 jan 3
+01/04 jan 4
+01/05 jan 5
+01/06 jan 6
+01/07 jan 7
+01/08 jan 8
+01/09 jan 9
+01/10 jan 10
+01/11 jan 11
+01/12 jan 12
+01/13 jan 13
+01/14 jan 14
+01/15 jan 15
+01/16 jan 16
+01/17 jan 17
+01/18 jan 18
+01/19 jan 19
+01/20 jan 20
+01/21 jan 21
+01/22 jan 22
+01/23 jan 23
+01/24 jan 24
+01/25 jan 25
+01/26 jan 26
+01/27 jan 27
+01/28 jan 28
+01/29 jan 29
+01/30 jan 30
+01/31 jan 31
+02/01 feb 1
+02/02 feb 2
+02/03 feb 3
+02/04 feb 4
+02/05 feb 5
+02/06 feb 6
+02/07 feb 7
+02/08 feb 8
+02/09 feb 9
+02/10 feb 10
+02/11 feb 11
+02/12 feb 12
+02/13 feb 13
+02/14 feb 14
+02/15 feb 15
+02/16 feb 16
+02/17 feb 17
+02/18 feb 18
+02/19 feb 19
+02/20 feb 20
+02/21 feb 21
+02/22 feb 22
+02/23 feb 23
+02/24 feb 24
+02/25 feb 25
+02/26 feb 26
+02/27 feb 27
+02/28 feb 28
+02/29 feb 29
+03/01 mar 1
+03/02 mar 2
+03/03 mar 3
+03/04 mar 4
+03/05 mar 5
+03/06 mar 6
+03/07 mar 7
+03/08 mar 8
+03/09 mar 9
+03/10 mar 10
+03/11 mar 11
+03/12 mar 12
+03/13 mar 13
+03/14 mar 14
+03/15 mar 15
+03/16 mar 16
+03/17 mar 17
+03/18 mar 18
+03/19 mar 19
+03/20 mar 20
+03/21 mar 21
+03/22 mar 22
+03/23 mar 23
+03/24 mar 24
+03/25 mar 25
+03/26 mar 26
+03/27 mar 27
+03/28 mar 28
+03/29 mar 29
+03/30 mar 30
+03/31 mar 31
+04/01 apr 1
+04/02 apr 2
+04/03 apr 3
+04/04 apr 4
+04/05 apr 5
+04/06 apr 6
+04/07 apr 7
+04/08 apr 8
+04/09 apr 9
+04/10 apr 10
+04/11 apr 11
+04/12 apr 12
+04/13 apr 13
+04/14 apr 14
+04/15 apr 15
+04/16 apr 16
+04/17 apr 17
+04/18 apr 18
+04/19 apr 19
+04/20 apr 20
+04/21 apr 21
+04/22 apr 22
+04/23 apr 23
+04/24 apr 24
+04/25 apr 25
+04/26 apr 26
+04/27 apr 27
+04/28 apr 28
+04/29 apr 29
+04/30 apr 30
+05/01 may 1
+05/02 may 2
+05/03 may 3
+05/04 may 4
+05/05 may 5
+05/06 may 6
+05/07 may 7
+05/08 may 8
+05/09 may 9
+05/10 may 10
+05/11 may 11
+05/12 may 12
+05/13 may 13
+05/14 may 14
+05/15 may 15
+05/16 may 16
+05/17 may 17
+05/18 may 18
+05/19 may 19
+05/20 may 20
+05/21 may 21
+05/22 may 22
+05/23 may 23
+05/24 may 24
+05/25 may 25
+05/26 may 26
+05/27 may 27
+05/28 may 28
+05/29 may 29
+05/30 may 30
+05/31 may 31
+06/01 jun 1
+06/02 jun 2
+06/03 jun 3
+06/04 jun 4
+06/05 jun 5
+06/06 jun 6
+06/07 jun 7
+06/08 jun 8
+06/09 jun 9
+06/10 jun 10
+06/11 jun 11
+06/12 jun 12
+06/13 jun 13
+06/14 jun 14
+06/15 jun 15
+06/16 jun 16
+06/17 jun 17
+06/18 jun 18
+06/19 jun 19
+06/20 jun 20
+06/21 jun 21
+06/22 jun 22
+06/23 jun 23
+06/24 jun 24
+06/25 jun 25
+06/26 jun 26
+06/27 jun 27
+06/28 jun 28
+06/29 jun 29
+06/30 jun 30
+07/01 jul 1
+07/02 jul 2
+07/03 jul 3
+07/04 jul 4
+07/05 jul 5
+07/06 jul 6
+07/07 jul 7
+07/08 jul 8
+07/09 jul 9
+07/10 jul 10
+07/11 jul 11
+07/12 jul 12
+07/13 jul 13
+07/14 jul 14
+07/15 jul 15
+07/16 jul 16
+07/17 jul 17
+07/18 jul 18
+07/19 jul 19
+07/20 jul 20
+07/21 jul 21
+07/22 jul 22
+07/23 jul 23
+07/24 jul 24
+07/25 jul 25
+07/26 jul 26
+07/27 jul 27
+07/28 jul 28
+07/29 jul 29
+07/30 jul 30
+07/31 jul 31
+08/01 aug 1
+08/02 aug 2
+08/03 aug 3
+08/04 aug 4
+08/05 aug 5
+08/06 aug 6
+08/07 aug 7
+08/08 aug 8
+08/09 aug 9
+08/10 aug 10
+08/11 aug 11
+08/12 aug 12
+08/13 aug 13
+08/14 aug 14
+08/15 aug 15
+08/16 aug 16
+08/17 aug 17
+08/18 aug 18
+08/19 aug 19
+08/20 aug 20
+08/21 aug 21
+08/22 aug 22
+08/23 aug 23
+08/24 aug 24
+08/25 aug 25
+08/26 aug 26
+08/27 aug 27
+08/28 aug 28
+08/29 aug 29
+08/30 aug 30
+08/31 aug 31
+09/01 sep 1
+09/02 sep 2
+09/03 sep 3
+09/04 sep 4
+09/05 sep 5
+09/06 sep 6
+09/07 sep 7
+09/08 sep 8
+09/09 sep 9
+09/10 sep 10
+09/11 sep 11
+09/12 sep 12
+09/13 sep 13
+09/14 sep 14
+09/15 sep 15
+09/16 sep 16
+09/17 sep 17
+09/18 sep 18
+09/19 sep 19
+09/20 sep 20
+09/21 sep 21
+09/22 sep 22
+09/23 sep 23
+09/24 sep 24
+09/25 sep 25
+09/26 sep 26
+09/27 sep 27
+09/28 sep 28
+09/29 sep 29
+09/30 sep 30
+10/01 oct 1
+10/02 oct 2
+10/03 oct 3
+10/04 oct 4
+10/05 oct 5
+10/06 oct 6
+10/07 oct 7
+10/08 oct 8
+10/09 oct 9
+10/10 oct 10
+10/11 oct 11
+10/12 oct 12
+10/13 oct 13
+10/14 oct 14
+10/15 oct 15
+10/16 oct 16
+10/17 oct 17
+10/18 oct 18
+10/19 oct 19
+10/20 oct 20
+10/21 oct 21
+10/22 oct 22
+10/23 oct 23
+10/24 oct 24
+10/25 oct 25
+10/26 oct 26
+10/27 oct 27
+10/28 oct 28
+10/29 oct 29
+10/30 oct 30
+10/31 oct 31
+11/01 nov 1
+11/02 nov 2
+11/03 nov 3
+11/04 nov 4
+11/05 nov 5
+11/06 nov 6
+11/07 nov 7
+11/08 nov 8
+11/09 nov 9
+11/10 nov 10
+11/11 nov 11
+11/12 nov 12
+11/13 nov 13
+11/14 nov 14
+11/15 nov 15
+11/16 nov 16
+11/17 nov 17
+11/18 nov 18
+11/19 nov 19
+11/20 nov 20
+11/21 nov 21
+11/22 nov 22
+11/23 nov 23
+11/24 nov 24
+11/25 nov 25
+11/26 nov 26
+11/27 nov 27
+11/28 nov 28
+11/29 nov 29
+11/30 nov 30
+12/01 dec 1
+12/02 dec 2
+12/03 dec 3
+12/04 dec 4
+12/05 dec 5
+12/06 dec 6
+12/07 dec 7
+12/08 dec 8
+12/09 dec 9
+12/10 dec 10
+12/11 dec 11
+12/12 dec 12
+12/13 dec 13
+12/14 dec 14
+12/15 dec 15
+12/16 dec 16
+12/17 dec 17
+12/18 dec 18
+12/19 dec 19
+12/20 dec 20
+12/21 dec 21
+12/22 dec 22
+12/23 dec 23
+12/24 dec 24
+12/25 dec 25
+12/26 dec 26
+12/27 dec 27
+12/28 dec 28
+12/29 dec 29
+12/30 dec 30
+12/31 dec 31
diff --git a/tools/regression/usr.bin/calendar/regress.a1.out b/tools/regression/usr.bin/calendar/regress.a1.out
new file mode 100644
index 0000000..ef3d71d
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.a1.out
@@ -0,0 +1,4 @@
+Dec 28 dec 28
+Dec 29 dec 29
+Dec 30 dec 30
+Dec 31 dec 31
diff --git a/tools/regression/usr.bin/calendar/regress.a2.out b/tools/regression/usr.bin/calendar/regress.a2.out
new file mode 100644
index 0000000..0fed38b
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.a2.out
@@ -0,0 +1,4 @@
+Dec 29 dec 29
+Dec 30 dec 30
+Dec 31 dec 31
+Jan 1 jan 1
diff --git a/tools/regression/usr.bin/calendar/regress.a3.out b/tools/regression/usr.bin/calendar/regress.a3.out
new file mode 100644
index 0000000..9dabd33
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.a3.out
@@ -0,0 +1,4 @@
+Dec 30 dec 30
+Dec 31 dec 31
+Jan 1 jan 1
+Jan 2 jan 2
diff --git a/tools/regression/usr.bin/calendar/regress.a4.out b/tools/regression/usr.bin/calendar/regress.a4.out
new file mode 100644
index 0000000..e3756b1
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.a4.out
@@ -0,0 +1,4 @@
+Dec 31 dec 31
+Jan 1 jan 1
+Jan 2 jan 2
+Jan 3 jan 3
diff --git a/tools/regression/usr.bin/calendar/regress.a5.out b/tools/regression/usr.bin/calendar/regress.a5.out
new file mode 100644
index 0000000..4f61d48
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.a5.out
@@ -0,0 +1,4 @@
+Jan 1 jan 1
+Jan 2 jan 2
+Jan 3 jan 3
+Jan 4 jan 4
diff --git a/tools/regression/usr.bin/calendar/regress.b1.out b/tools/regression/usr.bin/calendar/regress.b1.out
new file mode 100644
index 0000000..ef3d71d
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.b1.out
@@ -0,0 +1,4 @@
+Dec 28 dec 28
+Dec 29 dec 29
+Dec 30 dec 30
+Dec 31 dec 31
diff --git a/tools/regression/usr.bin/calendar/regress.b2.out b/tools/regression/usr.bin/calendar/regress.b2.out
new file mode 100644
index 0000000..0fed38b
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.b2.out
@@ -0,0 +1,4 @@
+Dec 29 dec 29
+Dec 30 dec 30
+Dec 31 dec 31
+Jan 1 jan 1
diff --git a/tools/regression/usr.bin/calendar/regress.b3.out b/tools/regression/usr.bin/calendar/regress.b3.out
new file mode 100644
index 0000000..9dabd33
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.b3.out
@@ -0,0 +1,4 @@
+Dec 30 dec 30
+Dec 31 dec 31
+Jan 1 jan 1
+Jan 2 jan 2
diff --git a/tools/regression/usr.bin/calendar/regress.b4.out b/tools/regression/usr.bin/calendar/regress.b4.out
new file mode 100644
index 0000000..e3756b1
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.b4.out
@@ -0,0 +1,4 @@
+Dec 31 dec 31
+Jan 1 jan 1
+Jan 2 jan 2
+Jan 3 jan 3
diff --git a/tools/regression/usr.bin/calendar/regress.b5.out b/tools/regression/usr.bin/calendar/regress.b5.out
new file mode 100644
index 0000000..4f61d48
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.b5.out
@@ -0,0 +1,4 @@
+Jan 1 jan 1
+Jan 2 jan 2
+Jan 3 jan 3
+Jan 4 jan 4
diff --git a/tools/regression/usr.bin/calendar/regress.s1.out b/tools/regression/usr.bin/calendar/regress.s1.out
new file mode 100644
index 0000000..0fed38b
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.s1.out
@@ -0,0 +1,4 @@
+Dec 29 dec 29
+Dec 30 dec 30
+Dec 31 dec 31
+Jan 1 jan 1
diff --git a/tools/regression/usr.bin/calendar/regress.s2.out b/tools/regression/usr.bin/calendar/regress.s2.out
new file mode 100644
index 0000000..65ab9c9
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.s2.out
@@ -0,0 +1,2 @@
+Dec 30 dec 30
+Dec 31 dec 31
diff --git a/tools/regression/usr.bin/calendar/regress.s3.out b/tools/regression/usr.bin/calendar/regress.s3.out
new file mode 100644
index 0000000..0c61207
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.s3.out
@@ -0,0 +1,2 @@
+Dec 31 dec 31
+Jan 1 jan 1
diff --git a/tools/regression/usr.bin/calendar/regress.s4.out b/tools/regression/usr.bin/calendar/regress.s4.out
new file mode 100644
index 0000000..8489769
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.s4.out
@@ -0,0 +1,2 @@
+Jan 1 jan 1
+Jan 2 jan 2
diff --git a/tools/regression/usr.bin/calendar/regress.sh b/tools/regression/usr.bin/calendar/regress.sh
new file mode 100644
index 0000000..743eb95
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.sh
@@ -0,0 +1,53 @@
+# $FreeBSD$
+
+CALENDAR_FILE="-f calendar.calibrate"
+CALENDAR_BIN="calendar"
+
+CALENDAR="${CALENDAR_BIN} ${CALENDAR_FILE}"
+
+REGRESSION_START($1)
+
+echo 1..4
+
+REGRESSION_TEST(`s1',`$CALENDAR -t 29.12.2006')
+REGRESSION_TEST(`s2',`$CALENDAR -t 30.12.2006')
+REGRESSION_TEST(`s3',`$CALENDAR -t 31.12.2006')
+REGRESSION_TEST(`s4',`$CALENDAR -t 01.01.2007')
+
+echo 5..9
+
+REGRESSION_TEST(`a1',`$CALENDAR -A 3 -t 28.12.2006')
+REGRESSION_TEST(`a2',`$CALENDAR -A 3 -t 29.12.2006')
+REGRESSION_TEST(`a3',`$CALENDAR -A 3 -t 30.12.2006')
+REGRESSION_TEST(`a4',`$CALENDAR -A 3 -t 31.12.2006')
+REGRESSION_TEST(`a5',`$CALENDAR -A 3 -t 01.01.2007')
+
+echo 10..14
+
+REGRESSION_TEST(`b1',`$CALENDAR -B 3 -t 31.12.2006')
+REGRESSION_TEST(`b2',`$CALENDAR -B 3 -t 01.01.2007')
+REGRESSION_TEST(`b3',`$CALENDAR -B 3 -t 02.01.2007')
+REGRESSION_TEST(`b4',`$CALENDAR -B 3 -t 03.01.2007')
+REGRESSION_TEST(`b5',`$CALENDAR -B 3 -t 04.01.2007')
+
+echo 15..21
+
+REGRESSION_TEST(`w0-1',`$CALENDAR -W 0 -t 28.12.2006')
+REGRESSION_TEST(`w0-2',`$CALENDAR -W 0 -t 29.12.2006')
+REGRESSION_TEST(`w0-3',`$CALENDAR -W 0 -t 30.12.2006')
+REGRESSION_TEST(`w0-4',`$CALENDAR -W 0 -t 31.12.2006')
+REGRESSION_TEST(`w0-5',`$CALENDAR -W 0 -t 01.01.2007')
+REGRESSION_TEST(`w0-6',`$CALENDAR -W 0 -t 02.01.2007')
+REGRESSION_TEST(`w0-7',`$CALENDAR -W 0 -t 03.01.2007')
+
+echo 22..28
+
+REGRESSION_TEST(`wn-1',`$CALENDAR -W 0 -t 28.12.2006')
+REGRESSION_TEST(`wn-2',`$CALENDAR -W 1 -t 28.12.2006')
+REGRESSION_TEST(`wn-3',`$CALENDAR -W 2 -t 28.12.2006')
+REGRESSION_TEST(`wn-4',`$CALENDAR -W 3 -t 28.12.2006')
+REGRESSION_TEST(`wn-5',`$CALENDAR -W 4 -t 28.12.2006')
+REGRESSION_TEST(`wn-6',`$CALENDAR -W 5 -t 28.12.2006')
+REGRESSION_TEST(`wn-7',`$CALENDAR -W 6 -t 28.12.2006')
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/calendar/regress.t b/tools/regression/usr.bin/calendar/regress.t
new file mode 100644
index 0000000..a82aacd
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+m4 ../regress.m4 regress.sh | sh
diff --git a/tools/regression/usr.bin/calendar/regress.w0-1.out b/tools/regression/usr.bin/calendar/regress.w0-1.out
new file mode 100644
index 0000000..5bd4072
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.w0-1.out
@@ -0,0 +1 @@
+Dec 28 dec 28
diff --git a/tools/regression/usr.bin/calendar/regress.w0-2.out b/tools/regression/usr.bin/calendar/regress.w0-2.out
new file mode 100644
index 0000000..66e7063
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.w0-2.out
@@ -0,0 +1 @@
+Dec 29 dec 29
diff --git a/tools/regression/usr.bin/calendar/regress.w0-3.out b/tools/regression/usr.bin/calendar/regress.w0-3.out
new file mode 100644
index 0000000..03073ee
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.w0-3.out
@@ -0,0 +1 @@
+Dec 30 dec 30
diff --git a/tools/regression/usr.bin/calendar/regress.w0-4.out b/tools/regression/usr.bin/calendar/regress.w0-4.out
new file mode 100644
index 0000000..a14f6b6
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.w0-4.out
@@ -0,0 +1 @@
+Dec 31 dec 31
diff --git a/tools/regression/usr.bin/calendar/regress.w0-5.out b/tools/regression/usr.bin/calendar/regress.w0-5.out
new file mode 100644
index 0000000..1232b9b
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.w0-5.out
@@ -0,0 +1 @@
+Jan 1 jan 1
diff --git a/tools/regression/usr.bin/calendar/regress.w0-6.out b/tools/regression/usr.bin/calendar/regress.w0-6.out
new file mode 100644
index 0000000..b3545a2
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.w0-6.out
@@ -0,0 +1 @@
+Jan 2 jan 2
diff --git a/tools/regression/usr.bin/calendar/regress.w0-7.out b/tools/regression/usr.bin/calendar/regress.w0-7.out
new file mode 100644
index 0000000..6449760
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.w0-7.out
@@ -0,0 +1 @@
+Jan 3 jan 3
diff --git a/tools/regression/usr.bin/calendar/regress.wn-1.out b/tools/regression/usr.bin/calendar/regress.wn-1.out
new file mode 100644
index 0000000..5bd4072
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.wn-1.out
@@ -0,0 +1 @@
+Dec 28 dec 28
diff --git a/tools/regression/usr.bin/calendar/regress.wn-2.out b/tools/regression/usr.bin/calendar/regress.wn-2.out
new file mode 100644
index 0000000..84a2b33
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.wn-2.out
@@ -0,0 +1,2 @@
+Dec 28 dec 28
+Dec 29 dec 29
diff --git a/tools/regression/usr.bin/calendar/regress.wn-3.out b/tools/regression/usr.bin/calendar/regress.wn-3.out
new file mode 100644
index 0000000..7f027e5
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.wn-3.out
@@ -0,0 +1,3 @@
+Dec 28 dec 28
+Dec 29 dec 29
+Dec 30 dec 30
diff --git a/tools/regression/usr.bin/calendar/regress.wn-4.out b/tools/regression/usr.bin/calendar/regress.wn-4.out
new file mode 100644
index 0000000..ef3d71d
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.wn-4.out
@@ -0,0 +1,4 @@
+Dec 28 dec 28
+Dec 29 dec 29
+Dec 30 dec 30
+Dec 31 dec 31
diff --git a/tools/regression/usr.bin/calendar/regress.wn-5.out b/tools/regression/usr.bin/calendar/regress.wn-5.out
new file mode 100644
index 0000000..c38c00b
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.wn-5.out
@@ -0,0 +1,5 @@
+Dec 28 dec 28
+Dec 29 dec 29
+Dec 30 dec 30
+Dec 31 dec 31
+Jan 1 jan 1
diff --git a/tools/regression/usr.bin/calendar/regress.wn-6.out b/tools/regression/usr.bin/calendar/regress.wn-6.out
new file mode 100644
index 0000000..63c99fe
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.wn-6.out
@@ -0,0 +1,6 @@
+Dec 28 dec 28
+Dec 29 dec 29
+Dec 30 dec 30
+Dec 31 dec 31
+Jan 1 jan 1
+Jan 2 jan 2
diff --git a/tools/regression/usr.bin/calendar/regress.wn-7.out b/tools/regression/usr.bin/calendar/regress.wn-7.out
new file mode 100644
index 0000000..4b48f68
--- /dev/null
+++ b/tools/regression/usr.bin/calendar/regress.wn-7.out
@@ -0,0 +1,7 @@
+Dec 28 dec 28
+Dec 29 dec 29
+Dec 30 dec 30
+Dec 31 dec 31
+Jan 1 jan 1
+Jan 2 jan 2
+Jan 3 jan 3
diff --git a/tools/regression/usr.bin/env/Makefile b/tools/regression/usr.bin/env/Makefile
new file mode 100644
index 0000000..c019964
--- /dev/null
+++ b/tools/regression/usr.bin/env/Makefile
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+TESTPGM?=TestProgramNotSpecifed
+
+all:
+ @echo "Note that the 'env' command uses its own regression suite,"
+ @echo "which uses a single data file and a script written in ruby."
+ @echo "By default it will test /usr/bin/env"
+ @echo
+ @ruby regress-sb.rb --rgdata=${.CURDIR}/regress-env.rgdata
+
+# A version which allows the user to specify which executable of `env'
+# should be tested, e.g.: make testenv TESTPROG=/usr/bin/env-rel6
+# This will probably need a bit more thought...
+testenv:
+ @ruby regress-sb.rb --rgdata=${.CURDIR}/regress-env.rgdata \
+ --testpgm=${TESTPGM} \ No newline at end of file
diff --git a/tools/regression/usr.bin/env/regress-env.rgdata b/tools/regression/usr.bin/env/regress-env.rgdata
new file mode 100644
index 0000000..9f562e9
--- /dev/null
+++ b/tools/regression/usr.bin/env/regress-env.rgdata
@@ -0,0 +1,384 @@
+#-
+# Copyright (c) 2005 - Garance Alistair Drosehn <gad@FreeBSD.org>.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+testpgm=/usr/bin/env
+gblenv=PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
+gblenv=TESTVAR=Global-TV-Value
+gblenv=OUTSIDEVAR=OutsideValue
+
+# These first two tests are testing how well the regression-script itself is
+# handling environment-variables, as much as testing the `env' program.
+[test]
+ sb_args:/bin/sh
+ setenv:TESTVAR=a1a
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-a1a-Z
+[run]
+[test]
+ sb_args:-S /bin/sh
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-Global-TV-Value-Z
+[run]
+
+[test]
+ sb_args:-S TESTVAR=bb22bb /bin/sh
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-bb22bb-Z
+[run]
+[test]
+ sb_args:-S\_TESTVAR=ab22ab\_/bin/sh
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-ab22ab-Z
+[run]
+[test]
+ sb_args:-S\_TESTVAR="abc\_33\_abc"\_/bin/sh
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-abc 33 abc-Z
+[run]
+
+# First we see that 'sh' can not be found in /usr/sbin, and then
+# we show that it can be found without changing PATH by using -P
+# And then show that it can be NOT found by using -P...
+[test]
+ sb_args:-S sh
+ setenv:PATH=/usr/sbin
+ script:/bin/echo A-${PATH}-Z
+ $?:127
+ stderr:[%-testpgm.basename-%]: sh: No such file or directory
+[run]
+[test]
+ sb_args:-S -P/bin sh
+ setenv:PATH=/usr/sbin
+ script:/bin/echo A-${PATH}-Z
+ stdout:A-/usr/sbin-Z
+[run]
+[test]
+ sb_args:-S -P/sbin:/usr/sbin sh
+ script:/bin/echo A-${PATH}-Z
+ $?:127
+ stderr:[%-testpgm.basename-%]: sh: No such file or directory
+[run]
+
+# Hmm. I wonder if -P should always set an 'ENV_PATH' variable?
+[test]
+ sb_args:-S -P/bin:/usr/bin:${PATH} ENV_PATH=/bin:/usr/bin:${PATH} sh
+ setenv:PATH=/usr/sbin
+ script:/bin/echo A-${PATH}-Z
+ script:/bin/echo B-${ENV_PATH}-Y
+ stdout:A-/usr/sbin-Z
+ stdout:B-/bin:/usr/bin:/usr/sbin-Y
+[run]
+
+# Show that the comment-characters are working, both for where they are
+# recognized and where they are ignored.
+[test]
+ sb_args:-STESTVAR="abc44abc" /bin/sh # This is some arbitrary text
+ user_args:us11er us22er
+ script:/bin/echo A-${TESTVAR}-Z B-$1-Y
+ stdout:A-abc44abc-Z B-us11er-Y
+[run]
+[test]
+ sb_args:-STESTVAR="abc55abc" /bin/sh \c This is some arbitrary text
+ user_args:us11er us22er
+ script:/bin/echo A-${TESTVAR}-Z B-$1-Y
+ stdout:A-abc55abc-Z B-us11er-Y
+[run]
+[test]
+ sb_args:-STESTVAR=abc#44#abc /bin/sh
+ user_args:us11er us22er
+ script:/bin/echo A-${TESTVAR}-Z B-$1-Y
+ stdout:A-abc#44#abc-Z B-us11er-Y
+[run]
+[test]
+ sb_args:-STESTVAR='abc\c55\cabc' /bin/sh
+ user_args:us11er us22er
+ script:/bin/echo A-${TESTVAR}-Z B-$1-Y
+ stdout:A-abc\c55\cabc-Z B-us11er-Y
+[run]
+
+# Test various aspects of quoted strings
+[test]
+ sb_args:-STESTVAR="abc'def" /bin/sh
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-abc'def-Z
+[run]
+[test]
+ sb_args:-STESTVAR='abc"def' /bin/sh
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-abc"def-Z
+[run]
+[test]
+ sb_args:-STESTVAR='ab\'cd\'ef' /bin/sh
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-ab'cd'ef-Z
+[run]
+[test]
+ sb_args:-STESTVAR='abc\"def\'ghi' /bin/sh
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-abc\"def'ghi-Z
+[run]
+[test]
+ sb_args:-STESTVAR='abc''def''ghi' /bin/sh
+ script:/bin/echo A-${TESTVAR}-Z
+ stdout:A-abcdefghi-Z
+[run]
+[test]
+ sb_args:-STESTVAR='abc\ndef\nghi' /bin/sh
+ script:/bin/echo "A-${TESTVAR}-Z"
+ stdout:A-abc\ndef\nghi-Z
+[run]
+[test]
+ sb_args:-STESTVAR="abc\ndef\nghi" /bin/sh
+ script:/bin/echo "A-${TESTVAR}-Z"
+ stdout:A-abc
+ stdout:def
+ stdout:ghi-Z
+[run]
+[test]
+ sb_args:-STESTVAR=""\_OTHERVAR=""\_/bin/sh
+ script:/bin/echo A-${TESTVAR}-M-${OTHERVAR}-Z
+ stdout:A--M--Z
+[run]
+[test]
+ sb_args:-STESTVAR=no-term-"-dq... /bin/sh
+ script:/bin/echo "A-${TESTVAR}-Z"
+ $?:1
+ stderr:[%-testpgm.basename-%]: No terminating quote for string: TESTVAR=no-term-"-dq... /bin/sh
+[run]
+[test]
+ sb_args:-STESTVAR=no-term-'-sq... /bin/sh
+ script:/bin/echo "A-${TESTVAR}-Z"
+ $?:1
+ stderr:[%-testpgm.basename-%]: No terminating quote for string: TESTVAR=no-term-'-sq... /bin/sh
+[run]
+
+# Some tests of variable-substitution.
+[test]
+ sb_args:-S TESTVAR=${TEST7} /bin/sh
+ setenv:TEST7=a23456a
+ script:/bin/echo "A-${TESTVAR}-Z"
+ stdout:A-a23456a-Z
+[run]
+[test]
+ sb_args:-S TESTVAR=${TEST8} /bin/sh
+ setenv:TEST8=b234567b
+ script:/bin/echo "A-${TESTVAR}-Z"
+ stdout:A-b234567b-Z
+[run]
+[test]
+ sb_args:-S TESTVAR=${TEST9} /bin/sh
+ setenv:TEST9=c2345678c
+ script:/bin/echo "A-${TESTVAR}-Z"
+ stdout:A-c2345678c-Z
+[run]
+[test]
+ sb_args:-S TESTVAR=${TEST8}+${TEST9}+${TEST10} /bin/sh
+ setenv:TEST8=a234567z
+ setenv:TEST9=a2345678z
+ setenv:TEST10=a23456789z
+ script:/bin/echo "A-${TESTVAR}-Z"
+ stdout:A-a234567z+a2345678z+a23456789z-Z
+[run]
+[test]
+ sb_args:-S TESTVAR=$* /bin/sh
+ script:/bin/echo "A-${TESTVAR}-Z"
+ $?:1
+ stderr:[%-testpgm.basename-%]: Only ${VARNAME} expansion is supported, error at: $* /bin/sh
+[run]
+[test]
+ sb_args:-S TESTVAR=/usr/bin:$PATH /bin/sh
+ script:/bin/echo "A-${TESTVAR}-Z"
+ $?:1
+ stderr:[%-testpgm.basename-%]: Only ${VARNAME} expansion is supported, error at: $PATH /bin/sh
+[run]
+
+# For a short time `env' was changed to recognize 'something=value' as a
+# valid utility name if 'something' begins with a '/'. However, that was
+# a bad idea, since variable-names with a '/' -- while rare -- are still
+# more blessed by standards than a filename with an '=' in it. So, this
+# test goes back to expecting an error...
+[test]
+ symlink:/bin/echo /tmp/envtest=echo
+ sb_args:-S/tmp/envtest=echo false
+ $?:1
+[run]
+
+# Show interactions between -i (clear environment), and ${VAR} substitution,
+# and that -i will clear the environment at the right point in processing...
+[test]
+ sb_args:-iS PATH=/bin:/usr/bin:/Not WASPATH=${PATH} WASOUT=${OUTSIDEVAR} TESTVAR=SbValue WASTEST=${TESTVAR} /bin/sh
+ script:/bin/echo "=== set ==="
+ script:# drop some environment variables that 'sh' itself sets, and
+ script:# then have 'set' print out all remaining environment variables.
+ script:# (can't unset OPTIND, so we use grep to get rid of that)
+ script:unset -v IFS PS1 PS2 PPID
+ script:set | grep -v '^OPTIND=' | sort
+ stdout:=== set ===
+ stdout:PATH=/bin:/usr/bin:/Not
+ stdout:TESTVAR=SbValue
+ stdout:WASOUT=OutsideValue
+ stdout:WASPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
+ stdout:WASTEST=Global-TV-Value
+[run]
+
+# Had a bug with ${VAR} expansion if the character before the $ was
+# one of the argument-separator characters. So the first of the
+# following worked, but the second one failed:
+[test]
+ sb_args:-Secho Testv:${TESTV} Scriptname:
+ setenv:TESTV=ab/ba
+ stdout:Testv:ab/ba Scriptname: [%-script.pathname-%]
+[run]
+[test]
+ sb_args:-Secho testV: ${TESTV} scriptname:
+ setenv:TESTV=cd/dc
+ stdout:testV: cd/dc scriptname: [%-script.pathname-%]
+[run]
+
+# A "nothing variable" inside a quoted string should produce a zero-length
+# argument, but if it's outside of quotes then it should result in, well,
+# nothing. Note the tricks we play with [%-script.pathname-%] so that we
+# can supply parameters *to* the script, even though the kernel is always
+# going to stick the script name on as ARG[2] when invoking `env'.
+[test]
+ sb_args:-S/bin/sh [%-script.pathname-%] userDQ: "" SQ: '' scriptname:
+ setenv:TNADA=
+ script:printf "list_args.sh with \$# = $#\n"
+ script:# Process all parameters.
+ script:N=0
+ script:while test $# != 0 ; do
+ script: N=$(($N+1))
+ script: printf "....\$$N = [%3d] '$1'\n" ${#1}
+ script: shift
+ script:done
+ stdout:list_args.sh with $# = 6
+ stdout:....$1 = [ 7] 'userDQ:'
+ stdout:....$2 = [ 0] ''
+ stdout:....$3 = [ 3] 'SQ:'
+ stdout:....$4 = [ 0] ''
+ stdout:....$5 = [ 11] 'scriptname:'
+ stdout:....$6 = [ 16] '/tmp/env-regress'
+[run]
+[test]
+ sb_args:-S/bin/sh [%-script.pathname-%] userB "${TNADA}" scriptname:
+ setenv:TNADA=
+ script:printf "list_args.sh with \$# = $#\n"
+ script:# Process all parameters.
+ script:N=0
+ script:while test $# != 0 ; do
+ script: N=$(($N+1))
+ script: printf "....\$$N = [%3d] '$1'\n" ${#1}
+ script: shift
+ script:done
+ stdout:list_args.sh with $# = 4
+ stdout:....$1 = [ 5] 'userB'
+ stdout:....$2 = [ 0] ''
+ stdout:....$3 = [ 11] 'scriptname:'
+ stdout:....$4 = [ 16] '/tmp/env-regress'
+[run]
+[test]
+ sb_args:-S/bin/sh [%-script.pathname-%] userA ${TNADA} scriptname:
+ setenv:TNADA=
+ script:printf "list_args.sh with \$# = $#\n"
+ script:# Process all parameters.
+ script:N=0
+ script:while test $# != 0 ; do
+ script: N=$(($N+1))
+ script: printf "....\$$N = [%3d] '$1'\n" ${#1}
+ script: shift
+ script:done
+ stdout:list_args.sh with $# = 3
+ stdout:....$1 = [ 5] 'userA'
+ stdout:....$2 = [ 11] 'scriptname:'
+ stdout:....$3 = [ 16] '[%-script.pathname-%]'
+[run]
+[test]
+ sb_args:-S/bin/sh [%-script.pathname-%] ${A} ${NB} ${C} ${ND} ${NE} ${F} S:
+ setenv:A=A_ThisisAlongstring_A1
+ setenv:NB=
+ setenv:C=C_ThisisAlongstring_C1
+ setenv:ND=
+ setenv:NE=
+ setenv:F=F_ThisisAlongstring_F1
+ script:printf "list_args.sh with \$# = $#\n"
+ script:# Process all parameters.
+ script:N=0
+ script:while test $# != 0 ; do
+ script: N=$(($N+1))
+ script: printf "....\$$N = [%3d] '$1'\n" ${#1}
+ script: shift
+ script:done
+ stdout:list_args.sh with $# = 5
+ stdout:....$1 = [ 22] 'A_ThisisAlongstring_A1'
+ stdout:....$2 = [ 22] 'C_ThisisAlongstring_C1'
+ stdout:....$3 = [ 22] 'F_ThisisAlongstring_F1'
+ stdout:....$4 = [ 2] 'S:'
+ stdout:....$5 = [ 16] '/tmp/env-regress'
+[run]
+[test]
+ sb_args:-S/bin/sh [%-script.pathname-%] ${A} ${NB} "${NB}" ${NB} ${C} "${ND}" ${NE} ${F} S:
+ setenv:A=A_ThisisAlongstring_A1
+ setenv:NB=
+ setenv:C=C_ThisisAlongstring_C1
+ setenv:ND=
+ setenv:NE=
+ setenv:F=F_ThisisAlongstring_F1
+ script:printf "list_args.sh with \$# = $#\n"
+ script:# Process all parameters.
+ script:N=0
+ script:while test $# != 0 ; do
+ script: N=$(($N+1))
+ script: printf "....\$$N = [%3d] '$1'\n" ${#1}
+ script: shift
+ script:done
+ stdout:list_args.sh with $# = 7
+ stdout:....$1 = [ 22] 'A_ThisisAlongstring_A1'
+ stdout:....$2 = [ 0] ''
+ stdout:....$3 = [ 22] 'C_ThisisAlongstring_C1'
+ stdout:....$4 = [ 0] ''
+ stdout:....$5 = [ 22] 'F_ThisisAlongstring_F1'
+ stdout:....$6 = [ 2] 'S:'
+ stdout:....$7 = [ 16] '/tmp/env-regress'
+[run]
+
+[test]
+ sb_args:-S/bin/echo ${A} ${B} ${C} ${D} ScriptName:
+ setenv:A=A_ThisisAlongstring_A1
+ setenv:B=B_ThisisAlongstring_B1
+ setenv:C=C_ThisisAlongstring_C1
+ setenv:D=D_ThisisAlongstring_D1
+ stdout:A_ThisisAlongstring_A1 B_ThisisAlongstring_B1 C_ThisisAlongstring_C1 D_ThisisAlongstring_D1 ScriptName: [%-script.pathname-%]
+[run]
+[test]
+ sb_args:-S/bin/echo ${A} "${B}" ${C} "${D}" ScriptName:
+ setenv:A=A_ThisisAlongstring_A1
+ setenv:B=B_ThisisAlongstring_B1
+ setenv:C=C_ThisisAlongstring_C1
+ setenv:D=D_ThisisAlongstring_D1
+ stdout:A_ThisisAlongstring_A1 B_ThisisAlongstring_B1 C_ThisisAlongstring_C1 D_ThisisAlongstring_D1 ScriptName: [%-script.pathname-%]
+[run]
diff --git a/tools/regression/usr.bin/env/regress-sb.rb b/tools/regression/usr.bin/env/regress-sb.rb
new file mode 100644
index 0000000..b692ef2
--- /dev/null
+++ b/tools/regression/usr.bin/env/regress-sb.rb
@@ -0,0 +1,540 @@
+#!/usr/local/bin/ruby
+# -------+---------+---------+-------- + --------+---------+---------+---------+
+# Copyright (c) 2005 - Garance Alistair Drosehn <gad@FreeBSD.org>.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+# -------+---------+---------+-------- + --------+---------+---------+---------+
+# $FreeBSD$
+# -------+---------+---------+-------- + --------+---------+---------+---------+
+# This script was written to provide a battery of regression-tests for some
+# changes I am making to the `env' command. I wrote a new script for this
+# for several reasons. 1) I needed to test all kinds of special-character
+# combinations, and I wanted to be able to type those in exactly as they would
+# would be in real-life situations. 2) I wanted to set environment variables
+# before executing a test, 3) I had many different details to test, so I wanted
+# to write up dozens of tests, without needing to create a hundred separate
+# little tiny files, 4) I wanted to test *failure* conditions, where I expected
+# the test would fail but I wanted to be sure that it failed the way I intended
+# it to fail.
+# This script was written for the special "shebang-line" testing that I
+# wanted for my changes to `env', but I expect it could be turned into a
+# general-purpose test-suite with a little more work.
+# Garance/June 12/2005
+# -------+---------+---------+-------- + --------+---------+---------+---------+
+
+
+# -------+---------+---------+-------- + --------+---------+---------+---------+
+class ExpectedResult
+ attr_writer :cmdvalue, :shebang_args, :user_args
+ @@gbl_envs = Hash.new
+
+ def ExpectedResult.add_gblenv(avar, avalue)
+ @@gbl_envs[avar] = avalue
+ end
+
+ def initialize
+ @shebang_args = ""
+ @cmdvalue = 0
+ @clear_envs = Hash.new
+ @new_envs = Hash.new
+ @old_envs = Hash.new
+ @script_lines = ""
+ @expect_err = Array.new
+ @expect_out = Array.new
+ @symlinks = Array.new
+ @user_args = nil
+ end
+
+ def add_expecterr(aline)
+ @expect_err << aline
+ end
+
+ def add_expectout(aline)
+ @expect_out << aline
+ end
+
+ def add_script(aline)
+ @script_lines += aline
+ @script_lines += "\n" if aline[-1] != "\n"
+ end
+
+ def add_clearenv(avar)
+ @clear_envs[avar] = true
+ end
+
+ def add_setenv(avar, avalue)
+ @new_envs[avar] = avalue
+ end
+
+ def add_symlink(srcf, newf)
+ @symlinks << Array.[](srcf, newf)
+ end
+
+ def check_out(name, fname, expect_arr)
+ idx = -1
+ all_matched = true
+ extra_lines = 0
+ rdata = File.open(fname)
+ rdata.each_line { |rline|
+ rline.chomp!
+ idx += 1
+ if idx > expect_arr.length - 1
+ if extra_lines == 0 and $verbose >= 1
+ printf "-- Extra line(s) on %s:\n", name
+ end
+ printf "-- [%d] > %s\n", idx, rline if $verbose >= 1
+ extra_lines += 1
+ elsif rline != expect_arr[idx]
+ if all_matched and $verbose >= 1
+ printf "-- Mismatched line(s) on %s:\n", name
+ end
+ printf "-- [%d] < %s\n", idx, expect_arr[idx] if $verbose >= 2
+ printf "-- > %s\n", rline if $verbose >= 1
+ all_matched = false
+ else
+ printf "-- %s[%d] = %s\n", name, idx, rline if $verbose >= 5
+ end
+ }
+ rdata.close
+ if extra_lines > 0
+ printf "-- %d extra line(s) found on %s\n", extra_lines,
+ name if $verbose == 0
+ return false
+ end
+ if not all_matched
+ printf "-- Mismatched line(s) found on %s\n",
+ name if $verbose == 0
+ return false
+ end
+ return true
+ end
+
+ def create_links
+ @symlinks.each { |fnames|
+ if $verbose >= 2
+ printf "-- Creating: symlink %s %s\n", fnames[0], fnames[1]
+ end
+ symres = File.symlink(fnames[0], fnames[1])
+ return false if symres == nil
+ return false unless File.symlink?(fnames[1])
+ }
+ return true
+ end
+
+ def destroy_links
+ @symlinks.each { |fnames|
+ if $verbose >= 2
+ printf "-- Removing: %s (symlink)\n", fnames[1]
+ end
+ if File.symlink?(fnames[1])
+ if File.delete(fnames[1]) != 1
+ $stderr.printf "Warning: problem removing symlink '%s'\n",
+ fnames[1]
+ end
+ else
+ $stderr.printf "Warning: Symlink '%s' does not exist?!?\n",
+ fnames[1]
+ end
+ }
+ return true
+ end
+
+ def init_io_files
+ @stderr = $scriptfile + ".stderr"
+ @stdout = $scriptfile + ".stdout"
+ File.delete(@stderr) if File.exists?(@stderr)
+ File.delete(@stdout) if File.exists?(@stdout)
+ @stdin = "/dev/null"
+
+ @redirs = " <" + @stdin
+ @redirs += " >" + @stdout
+ @redirs += " 2>" + @stderr
+
+ end
+
+ def pop_envs
+ @new_envs.each_key { |evar|
+ if @old_envs.has_key?(evar)
+ ENV[evar] = @old_envs[evar]
+ else
+ ENV.delete(evar)
+ end
+ }
+ end
+
+ def push_envs
+ @@gbl_envs.each_pair { |evar, eval|
+ ENV[evar] = eval
+ }
+ @new_envs.each_pair { |evar, eval|
+ if ENV.has_key?(evar)
+ @old_envs[evar] = ENV[evar]
+ end
+ ENV[evar] = eval
+ }
+ end
+
+ def run_test
+ tscript = File.open($scriptfile, "w")
+ tscript.printf "#!%s", $testpgm
+ tscript.printf " %s", @shebang_args if @shebang_args != ""
+ tscript.printf "\n"
+ tscript.printf "%s", @script_lines if @script_lines != ""
+ tscript.close
+ File.chmod(0755, $scriptfile)
+
+ usercmd = $scriptfile
+ usercmd += " " + @user_args if @user_args != nil
+ init_io_files
+
+ push_envs
+ return 0 unless create_links
+ printf "- Executing: %s\n", usercmd if $verbose >= 1
+ printf "----- with: %s\n", @redirs if $verbose >= 6
+ sys_ok = system(usercmd + @redirs)
+ if sys_ok
+ @sav_cmdvalue = 0
+ elsif $?.exited?
+ @sav_cmdvalue = $?.exitstatus
+ else
+ @sav_cmdvalue = 125
+ end
+ destroy_links
+ pop_envs
+ sys_ok = true
+ if @sav_cmdvalue != @cmdvalue
+ printf "-- Expecting cmdvalue of %d, but $? == %d\n", @cmdvalue,
+ @sav_cmdvalue
+ sys_ok = false
+ end
+ sys_ok = false unless check_out("stdout", @stdout, @expect_out)
+ sys_ok = false unless check_out("stderr", @stderr, @expect_err)
+ return 1 if sys_ok
+ return 0
+ end
+end
+
+# -------+---------+---------+-------- + --------+---------+---------+---------+
+# Processing of the command-line options given to the regress-sb.rb script.
+#
+class CommandOptions
+ def CommandOptions.parse(command_args)
+ parse_ok = true
+ command_args.each { |userarg|
+ case userarg
+ when /^--rgdata=(\S+)$/
+ parse_ok = false unless set_rgdatafile($1)
+ when /^--testpgm=(\S+)$/
+ parse_ok = false unless set_testpgm($1)
+ $cmdopt_testpgm = $testpgm
+ when "--stop-on-error", "--stop_on_error"
+ $stop_on_error = true
+ when /^--/
+ $stderr.printf "Error: Invalid long option: %s\n", userarg
+ parse_ok = false
+ when /^-/
+ userarg = userarg[1...userarg.length]
+ userarg.each_byte { |byte|
+ char = byte.chr
+ case char
+ when "v"
+ $verbose += 1
+ else
+ $stderr.printf "Error: Invalid short option: -%s\n", char
+ parse_ok = false
+ end
+ }
+ else
+ $stderr.printf "Error: Invalid request: %s\n", userarg
+ parse_ok = false
+ end
+ }
+ if $rgdatafile == nil
+ rgmatch = Dir.glob("regress*.rgdata")
+ if rgmatch.length == 1
+ $rgdatafile = rgmatch[0]
+ printf "Assuming --rgdata=%s\n", $rgdatafile
+ else
+ $stderr.printf "Error: The --rgdata file was not specified\n"
+ parse_ok = false
+ end
+ end
+ return parse_ok
+ end
+
+ def CommandOptions.set_rgdatafile(fname)
+ if not File.exists?(fname)
+ $stderr.printf "Error: Rgdata file '%s' does not exist\n", fname
+ return false
+ elsif not File.readable?(fname)
+ $stderr.printf "Error: Rgdata file '%s' is not readable\n", fname
+ return false
+ end
+ $rgdatafile = File.expand_path(fname)
+ return true
+ end
+
+ def CommandOptions.set_testpgm(fname)
+ if not File.exists?(fname)
+ $stderr.printf "Error: Testpgm file '%s' does not exist\n", fname
+ return false
+ elsif not File.executable?(fname)
+ $stderr.printf "Error: Testpgm file '%s' is not executable\n", fname
+ return false
+ end
+ $testpgm = File.expand_path(fname)
+ return true
+ end
+end
+
+# -------+---------+---------+-------- + --------+---------+---------+---------+
+# Processing of the test-specific options specifed in each [test]/[run]
+# section of the regression-data file. This will set values in the
+# global $testdata object.
+#
+class RGTestOptions
+ @@rgtest_opts = nil;
+
+ def RGTestOptions.init_rgtopts
+ @@rgtest_opts = Hash.new
+ @@rgtest_opts["$?"] = true
+ @@rgtest_opts["clearenv"] = true
+ @@rgtest_opts["sb_args"] = true
+ @@rgtest_opts["script"] = true
+ @@rgtest_opts["setenv"] = true
+ @@rgtest_opts["stderr"] = true
+ @@rgtest_opts["stdout"] = true
+ @@rgtest_opts["symlink"] = true
+ @@rgtest_opts["user_args"] = true
+ end
+
+ def RGTestOptions.parse(optname, optval)
+ init_rgtopts unless @@rgtest_opts
+
+ if not @@rgtest_opts.has_key?(optname)
+ $stderr.printf "Error: Invalid test-option in rgdata file: %s\n",
+ optname
+ return false
+ end
+
+ # Support a few very specific substitutions in values specified
+ # for test data. Format of all recognized values should be:
+ # [%-object.value-%]
+ # which is hopefully distinctive-enough that they will never
+ # conflict with any naturally-occuring string. Also note that
+ # we only match the specific values that we recognize, and not
+ # "just anything" that matches the general pattern. There are
+ # no blanks in the recognized values, but I use an x-tended
+ # regexp and then add blanks to make it more readable.
+ optval.gsub!(/\[%- testpgm\.basename -%\]/x, File.basename($testpgm))
+ optval.gsub!(/\[%- script\.pathname -%\]/x, $scriptfile)
+
+ invalid_value = false
+ case optname
+ when "$?"
+ if optval =~ /^\d+$/
+ $testdata.cmdvalue = optval.to_i
+ else
+ invalid_value = true
+ end
+ when "clearenv"
+ if optval =~ /^\s*([A-Za-z]\w*)\s*$/
+ $testdata.add_clearenv($1)
+ else
+ invalid_value = true
+ end
+ when "sb_args"
+ $testdata.shebang_args = optval
+ when "script"
+ $testdata.add_script(optval)
+ when "setenv"
+ if optval =~ /^\s*([A-Za-z]\w*)=(.*)$/
+ $testdata.add_setenv($1, $2)
+ else
+ invalid_value = true
+ end
+ when "stderr"
+ $testdata.add_expecterr(optval)
+ when "stdout"
+ $testdata.add_expectout(optval)
+ when "symlink"
+ if optval =~ /^\s*(\S+)\s+(\S+)\s*$/
+ srcfile = $1
+ newfile = $2
+ if not File.exists?(srcfile)
+ $stderr.printf "Error: source file '%s' does not exist.\n",
+ srcfile
+ invalid_value = true
+ elsif File.exists?(newfile)
+ $stderr.printf "Error: new file '%s' already exists.\n",
+ newfile
+ invalid_value = true
+ else
+ $testdata.add_symlink(srcfile, newfile)
+ end
+ else
+ invalid_value = true
+ end
+ when "user_args"
+ $testdata.user_args = optval
+ else
+ $stderr.printf "InternalError: Invalid test-option in rgdata file: %s\n",
+ optname
+ return false
+ end
+
+ if invalid_value
+ $stderr.printf "Error: Invalid value(s) for %s: %s\n",
+ optname, optval
+ return false
+ end
+ return true
+ end
+end
+
+# -------+---------+---------+-------- + --------+---------+---------+---------+
+# Here's where the "main" routine begins...
+#
+
+$cmdopt_testpgm = nil
+$testpgm = nil
+$rgdatafile = nil
+$scriptfile = "/tmp/env-regress"
+$stop_on_error = false
+$verbose = 0
+
+exit 1 unless CommandOptions.parse(ARGV)
+
+errline = nil
+test_count = 0
+testok_count = 0
+test_lineno = -1
+max_test = -1
+regress_data = File.open($rgdatafile)
+regress_data.each_line { |dline|
+ case dline
+ when /^\s*#/, /^\s*$/
+ # Just a comment line, ignore it.
+ when /^\s*gblenv=\s*(.+)$/
+ if test_lineno > 0
+ $stderr.printf "Error: Cannot define a global-value in the middle of a test (#5d)\n", test_lineno
+ errline = regress_data.lineno
+ break;
+ end
+ tempval = $1
+ if tempval !~ /^([A-Za-z]\w*)=(.*)$/
+ $stderr.printf "Error: Invalid value for 'gblenv=' request: %s\n",
+ tempval
+ errline = regress_data.lineno
+ break;
+ end
+ ExpectedResult.add_gblenv($1, $2)
+ when /^testpgm=\s*(\S+)\s*/
+ # Set the location of the program to be tested, if it wasn't set
+ # on the command-line processing.
+ if $cmdopt_testpgm == nil
+ if not CommandOptions.set_testpgm($1)
+ errline = regress_data.lineno
+ break;
+ end
+ end
+ when /^\[test\]$/
+ if test_lineno > 0
+ $stderr.printf "Error: Request to define a [test], but we are still defining\n"
+ $stderr.printf " the [test] at line #%s\n", test_lineno
+ errline = regress_data.lineno
+ break;
+ end
+ test_lineno = regress_data.lineno
+ max_test = test_lineno
+ printf "- Defining test at line #%s\n", test_lineno if $verbose >= 6
+ $testdata = ExpectedResult.new
+ when /^\[end\]$/
+ # User wants us to ignore the remainder of the rgdata file...
+ break;
+ when /^\[run\]$/
+ if test_lineno < 0
+ $stderr.printf "Error: Request to [run] a test, but no test is presently defined\n"
+ errline = regress_data.lineno
+ break;
+ end
+ printf "- Running test at line #%s\n", test_lineno if $verbose >= 1
+ run_result = $testdata.run_test
+ test_count += 1
+ printf "[Test #%3d: ", test_count
+ case run_result
+ when 0
+ # Test failed
+ printf "Failed! (line %4d)]\n", test_lineno
+ break if $stop_on_error
+ when 1
+ # Test ran as expected
+ testok_count += 1
+ printf "OK]\n"
+ else
+ # Internal error of some sort
+ printf "InternalError! (line %4d)]\n", test_lineno
+ errline = regress_data.lineno
+ break;
+ end
+ test_lineno = -1
+
+ when /^(\s*)([^\s:]+)\s*:(.+)$/
+ blankpfx = $1
+ test_lhs = $2
+ test_rhs = $3
+ if test_lineno < 0
+ $stderr.printf "Error: No test is presently being defined\n"
+ errline = regress_data.lineno
+ break;
+ end
+ # All the real work happens in RGTestOptions.parse
+ if not RGTestOptions.parse(test_lhs, test_rhs)
+ errline = regress_data.lineno
+ break;
+ end
+ if blankpfx.length == 0
+ $stderr.printf "Note: You should at least one blank before:%s\n",
+ dline.chomp
+ $stderr.printf " at line %d of rgdata file %s\n",
+ regress_data.lineno, $rgdatafile
+ end
+
+ else
+ $stderr.printf "Error: Invalid line: %s\n", dline.chomp
+ errline = regress_data.lineno
+ break;
+ end
+}
+regress_data.close
+if errline != nil
+ $stderr.printf " at line %d of rgdata file %s\n", errline, $rgdatafile
+ exit 2
+end
+if testok_count != test_count
+ printf "%d of %d tests were successful.\n", testok_count, test_count
+ exit 1
+end
+
+printf "All %d tests were successful!\n", testok_count
+exit 0
diff --git a/tools/regression/usr.bin/file2c/Makefile b/tools/regression/usr.bin/file2c/Makefile
new file mode 100644
index 0000000..b937d41
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}
diff --git a/tools/regression/usr.bin/file2c/regress.1.out b/tools/regression/usr.bin/file2c/regress.1.out
new file mode 100644
index 0000000..6b760fe
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.1.out
@@ -0,0 +1 @@
+175,212,59,239,227,234,192,22,186,113,52,204,195
diff --git a/tools/regression/usr.bin/file2c/regress.2.out b/tools/regression/usr.bin/file2c/regress.2.out
new file mode 100644
index 0000000..07acb21
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.2.out
@@ -0,0 +1,3 @@
+PREFIX
+175,212,59,239,227,234,192,22,186,113,52,204,195,81,240,223,173,115,109,
+102,175,183,24,185,173,137
diff --git a/tools/regression/usr.bin/file2c/regress.3.out b/tools/regression/usr.bin/file2c/regress.3.out
new file mode 100644
index 0000000..55502df
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.3.out
@@ -0,0 +1,5 @@
+PREFIX
+175,212,59,239,227,234,192,22,186,113,52,204,195,81,240,223,173,115,109,
+102,175,183,24,185,173,137,107,116,77,142,217,172,196,45,62,228,41,174,
+134
+SUFFIX
diff --git a/tools/regression/usr.bin/file2c/regress.4.out b/tools/regression/usr.bin/file2c/regress.4.out
new file mode 100644
index 0000000..dc21fd0
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.4.out
@@ -0,0 +1,4 @@
+0xaf,0xd4,0x3b,0xef,0xe3,0xea,0xc0,0x16,0xba,0x71,0x34,0xcc,0xc3,0x51,0xf0,
+0xdf,0xad,0x73,0x6d,0x66,0xaf,0xb7,0x18,0xb9,0xad,0x89,0x6b,0x74,0x4d,0x8e,
+0xd9,0xac,0xc4,0x2d,0x3e,0xe4,0x29,0xae,0x86,0x36,0xbb,0xe7,0x35,0x7c,0x92,
+0x88,0xcb,0x34,0x5b,0xae,0xd4,0x73
diff --git a/tools/regression/usr.bin/file2c/regress.5.out b/tools/regression/usr.bin/file2c/regress.5.out
new file mode 100644
index 0000000..8210ab5
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.5.out
@@ -0,0 +1 @@
+175,212,59,239,227,234,192,22,186,113,52,204,195,81,240,223,173,115,109,102,175,183,24,185,173,137,107,116,77,142,217,172,196,45,62,228,41,174,134,54,187,231,53,124,146,136,203,52,91,174,212,115,254,86,214,31,196,19,159,213,217,170,247,32,69
diff --git a/tools/regression/usr.bin/file2c/regress.6.out b/tools/regression/usr.bin/file2c/regress.6.out
new file mode 100644
index 0000000..0f2bb74
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.6.out
@@ -0,0 +1,9 @@
+P
+175,
+212,
+59,
+239,
+227,
+234,
+192
+S
diff --git a/tools/regression/usr.bin/file2c/regress.7.out b/tools/regression/usr.bin/file2c/regress.7.out
new file mode 100644
index 0000000..f94ac55
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.7.out
@@ -0,0 +1,8 @@
+P S
+0xaf,0xd4,
+0x3b,0xef,
+0xe3,0xea,
+0xc0,0x16,
+0xba,0x71,
+0x34,0xcc,
+0xc3,0x51
diff --git a/tools/regression/usr.bin/file2c/regress.8.out b/tools/regression/usr.bin/file2c/regress.8.out
new file mode 100644
index 0000000..5f5ce9d
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.8.out
@@ -0,0 +1,4 @@
+P
+175,212,59,239,227,234,192,22,186,113,52,204,195,81,240,223,
+173,115,109,102,175
+-x
diff --git a/tools/regression/usr.bin/file2c/regress.9.out b/tools/regression/usr.bin/file2c/regress.9.out
new file mode 100644
index 0000000..91f5e00
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.9.out
@@ -0,0 +1,104 @@
+const char data[] = {
+175,212,59,239,227,234,192,22,186,113,52,204,195,81,240,223,173,115,109,
+102,175,183,24,185,173,137,107,116,77,142,217,172,196,45,62,228,41,174,
+134,54,187,231,53,124,146,136,203,52,91,174,212,115,254,86,214,31,196,19,
+159,213,217,170,247,32,69,15,231,52,136,125,195,84,63,231,94,73,173,8,93,
+21,246,118,130,218,200,68,1,213,178,88,162,39,161,153,54,177,161,114,188,
+55,163,166,158,218,151,163,44,7,42,25,221,143,194,40,129,228,100,128,87,
+22,76,210,109,149,64,61,169,252,1,10,61,78,17,233,29,222,247,155,156,34,
+151,186,171,39,111,169,87,194,186,102,95,11,205,207,209,111,83,167,166,
+29,172,60,135,178,208,166,219,38,228,105,200,239,180,184,232,11,1,81,233,
+107,45,73,109,94,17,10,51,91,47,89,38,253,42,224,111,143,244,243,132,225,
+236,187,30,9,241,233,210,161,200,236,249,21,197,176,161,185,240,15,155,
+73,244,186,255,214,180,122,15,206,205,35,217,58,112,50,82,199,35,150,232,
+96,54,67,77,248,243,17,96,131,221,212,44,236,137,88,213,20,21,87,89,238,
+199,156,82,77,167,123,2,92,199,167,190,74,59,80,50,196,105,153,40,27,93,
+170,194,85,110,39,185,21,155,221,105,44,156,220,30,29,17,220,26,54,30,167,
+42,77,239,74,240,203,94,63,221,148,49,14,107,117,66,1,105,243,79,165,175,
+174,213,130,57,187,168,91,229,107,49,55,120,144,120,93,89,120,60,127,84,
+152,194,184,102,115,33,8,221,63,46,181,152,83,62,45,231,162,173,228,103,
+103,116,248,51,141,21,236,8,30,123,30,234,59,188,86,232,101,106,153,116,
+200,64,175,52,18,186,152,60,255,171,132,173,173,176,60,246,21,85,51,240,
+237,224,250,22,33,89,89,204,108,107,121,119,120,215,207,179,181,142,127,
+78,131,95,195,100,48,166,135,170,195,247,111,185,202,47,151,74,62,32,174,
+242,230,104,193,252,28,115,187,212,110,41,39,170,27,167,229,36,31,192,214,
+209,35,149,83,44,7,74,16,6,162,164,171,21,48,68,19,137,29,115,225,31,97,
+226,39,220,241,118,3,172,249,17,144,45,171,247,34,124,160,136,171,7,165,
+127,186,207,150,30,115,162,6,75,153,114,65,146,59,93,162,184,197,81,160,
+173,244,205,8,84,76,85,214,195,73,70,6,38,135,198,111,48,242,129,24,202,
+183,227,77,62,92,136,58,149,235,155,34,100,63,248,185,247,103,12,117,135,
+218,116,114,185,35,11,178,217,192,11,184,239,201,107,24,187,32,183,149,
+180,103,191,36,72,152,129,204,108,46,14,187,236,222,134,28,158,81,41,15,
+83,148,165,165,16,50,134,119,162,211,103,6,28,182,225,13,67,165,25,110,
+51,141,158,80,112,27,2,163,34,96,55,223,171,108,115,119,191,29,45,48,176,
+93,63,123,252,132,121,238,116,180,217,185,178,213,86,194,197,122,13,159,
+70,109,151,247,182,134,65,76,155,189,174,220,28,38,253,222,56,102,50,221,
+183,255,234,113,240,24,149,76,227,18,188,10,201,110,148,51,108,253,37,32,
+192,136,135,149,253,77,23,99,213,12,35,25,219,234,9,251,145,90,23,111,223,
+251,54,16,217,91,116,214,175,95,87,116,228,191,226,227,72,67,72,227,52,
+91,237,107,6,20,30,67,179,215,177,9,138,235,14,83,23,37,127,111,36,122,
+165,179,81,247,230,81,106,89,85,62,188,48,49,122,155,172,71,129,167,98,
+25,108,23,89,100,251,85,108,114,163,179,40,40,129,67,78,165,71,126,55,35,
+108,168,86,141,242,16,178,196,234,255,243,10,170,84,201,160,243,153,12,
+246,112,87,172,229,154,154,231,225,154,62,78,50,100,211,194,225,50,14,134,
+198,5,48,174,154,213,62,249,2,77,18,179,154,27,244,32,44,73,74,150,48,103,
+186,212,126,48,213,41,240,21,209,94,239,111,157,235,120,194,179,15,45,110,
+74,114,107,248,124,221,42,1,248,115,14,20,76,219,51,178,87,83,74,81,179,
+10,188,233,36,90,123,175,106,85,72,85,247,247,150,22,127,238,219,156,230,
+141,108,80,92,226,205,250,61,57,23,128,120,138,195,61,50,48,40,89,57,0,
+108,138,179,29,182,118,58,232,220,199,228,56,184,194,86,244,239,16,198,
+172,248,114,100,209,210,74,246,210,215,83,149,65,151,36,215,64,148,13,198,
+151,160,109,43,109,176,149,187,55,216,239,227,157,71,1,137,235,100,30,155,
+160,6,153,19,17,57,45,17,211,240,230,117,98,228,16,148,211,217,183,210,
+224,126,134,129,133,59,238,108,128,55,9,53,63,209,219,15,241,210,179,126,
+209,237,226,31,168,14,244,84,15,178,156,207,52,183,238,75,46,198,222,199,
+187,122,236,157,216,200,186,206,232,178,139,180,48,172,179,64,255,173,117,
+56,187,111,51,164,176,81,74,18,223,195,241,215,110,118,170,10,85,42,118,
+207,167,76,52,10,223,217,199,21,148,132,227,122,89,95,50,196,35,113,250,
+140,131,221,33,214,61,172,16,167,189,85,183,33,99,28,255,105,45,230,252,
+78,58,141,63,233,184,227,150,177,23,124,88,77,152,224,53,47,208,156,141,
+227,80,76,93,97,205,63,126,216,128,43,234,86,241,35,225,209,53,194,40,228,
+135,97,224,135,136,209,172,124,127,193,198,125,70,219,251,134,56,110,128,
+134,235,20,184,170,1,178,173,176,236,18,79,83,60,110,117,154,242,5,254,
+212,231,224,203,236,117,245,92,109,193,45,187,32,223,184,174,68,68,7,21,
+83,150,227,254,117,189,137,53,47,194,235,84,106,158,96,253,148,233,20,219,
+47,195,115,90,131,219,109,94,179,197,153,117,170,201,115,217,52,34,242,
+177,36,163,172,89,31,237,128,202,79,206,95,232,250,245,250,248,85,205,18,
+42,255,89,27,253,151,196,70,111,223,210,133,43,141,220,38,164,115,97,253,
+143,14,110,111,161,180,120,180,10,67,159,159,131,78,250,171,117,254,102,
+180,19,191,64,121,234,124,209,6,99,115,126,62,6,180,117,63,96,47,252,91,
+238,92,31,161,23,148,54,247,17,114,8,109,120,173,236,230,16,160,52,172,
+135,100,28,109,74,112,236,30,120,44,179,241,226,128,86,36,25,43,0,131,174,
+39,71,145,42,145,57,134,49,119,186,21,71,227,7,143,23,129,207,212,68,86,
+189,223,128,210,13,244,134,154,21,247,229,135,56,126,130,64,24,129,97,170,
+179,60,2,251,235,7,146,54,168,51,205,241,176,243,18,112,166,154,11,185,
+34,2,74,34,112,80,194,44,31,79,148,22,126,184,143,164,65,185,118,97,137,
+197,195,71,201,124,30,189,16,222,168,96,21,114,25,135,66,61,52,196,6,103,
+156,174,43,155,156,146,168,129,221,31,38,17,84,177,13,182,35,86,148,68,
+216,182,162,189,162,229,124,99,43,181,175,191,21,89,116,76,18,120,112,167,
+160,199,230,54,159,75,205,231,34,123,227,122,40,228,137,194,91,15,83,32,
+161,238,160,158,81,254,235,51,181,128,169,77,75,128,9,221,244,167,92,168,
+132,102,155,20,17,0,115,64,13,198,187,22,66,80,133,155,139,35,77,184,50,
+31,108,46,113,132,129,105,10,38,109,158,217,152,252,106,137,70,214,109,
+142,23,193,78,47,157,63,199,246,92,213,249,158,193,196,65,53,159,48,43,
+139,17,210,33,122,153,199,184,146,155,64,139,233,170,2,81,2,116,140,134,
+148,214,138,6,54,223,45,254,180,208,72,255,191,65,129,138,27,28,48,41,125,
+203,72,62,184,117,59,124,59,156,127,22,130,200,25,188,17,87,87,71,180,203,
+126,37,171,228,197,213,193,24,95,185,8,33,6,135,150,88,215,49,121,249,249,
+126,93,145,33,48,231,203,214,171,53,189,190,186,69,74,78,226,152,46,73,
+97,132,93,57,243,62,8,23,160,48,143,26,243,244,69,223,70,9,4,61,104,204,
+57,82,28,232,205,45,164,252,49,24,192,241,200,120,32,90,181,153,234,105,
+124,201,101,91,145,121,236,41,0,73,54,204,145,93,72,105,203,59,118,155,
+173,58,37,137,45,50,207,33,83,188,236,149,223,23,55,24,140,220,235,248,
+224,145,15,225,11,88,85,101,138,235,92,38,59,58,179,203,8,44,28,225,1,147,
+217,197,33,237,115,216,55,178,154,74,207,199,158,198,39,180,203,103,52,
+132,48,98,243,121,32,210,6,119,180,225,230,79,227,207,190,151,119,209,155,
+216,34,156,47,179,133,184,77,108,199,243,170,14,43,166,203,191,43,209,144,
+37,246,211,139,52,133,37,75,31,6,103,246,112,230,134,120,239,33,136,82,
+40,158,0,11,62,156,209,141,170,166,191,34,201,17,115,227,161,89,21,53,200,
+239,123,153,200,115,87,10,4,203,69,132,33,245,27,237,253,86,90,38,51,139,
+117,223,46,112,206,251,91,230,219,203,46,194,226,218,192,8,24,104,111,102,
+55,241,73,26,49,35,15,35,55,48,3,151,212,63,105,195,186,42,7,221,56,14,
+122,92,188,17,179,185,199,165,231,154,149,231,102,135,64,192,7,54,233,13,
+191,88,180,161,11,154,175
+, 0};
diff --git a/tools/regression/usr.bin/file2c/regress.in b/tools/regression/usr.bin/file2c/regress.in
new file mode 100644
index 0000000..405465a
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.in
Binary files differ
diff --git a/tools/regression/usr.bin/file2c/regress.sh b/tools/regression/usr.bin/file2c/regress.sh
new file mode 100644
index 0000000..4492e91
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.sh
@@ -0,0 +1,19 @@
+# $FreeBSD$
+
+echo 1..9
+
+REGRESSION_START($1)
+
+REGRESSION_TEST(`1', `head -c 13 regress.in | file2c')
+REGRESSION_TEST(`2', `head -c 26 regress.in | file2c PREFIX')
+REGRESSION_TEST(`3', `head -c 39 regress.in | file2c PREFIX SUFFIX')
+REGRESSION_TEST(`4', `head -c 52 regress.in | file2c -x')
+REGRESSION_TEST(`5', `head -c 65 regress.in | file2c -n -1')
+
+REGRESSION_TEST(`6', `head -c 7 regress.in | file2c -n 1 P S')
+REGRESSION_TEST(`7', `head -c 14 regress.in | file2c -n 2 -x "P S"')
+REGRESSION_TEST(`8', `head -c 21 regress.in | file2c -n 16 P -x S')
+
+REGRESSION_TEST(`9', `file2c "const char data[] = {" ", 0};" < regress.in')
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/file2c/regress.t b/tools/regression/usr.bin/file2c/regress.t
new file mode 100644
index 0000000..a82aacd
--- /dev/null
+++ b/tools/regression/usr.bin/file2c/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+m4 ../regress.m4 regress.sh | sh
diff --git a/tools/regression/usr.bin/join/Makefile b/tools/regression/usr.bin/join/Makefile
new file mode 100644
index 0000000..b937d41
--- /dev/null
+++ b/tools/regression/usr.bin/join/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}
diff --git a/tools/regression/usr.bin/join/regress.1.in b/tools/regression/usr.bin/join/regress.1.in
new file mode 100644
index 0000000..975bbaf
--- /dev/null
+++ b/tools/regression/usr.bin/join/regress.1.in
@@ -0,0 +1,4 @@
+!Name,Data1
+Foo,1
+Bar,2
+Baz,3
diff --git a/tools/regression/usr.bin/join/regress.2.in b/tools/regression/usr.bin/join/regress.2.in
new file mode 100644
index 0000000..0206b49
--- /dev/null
+++ b/tools/regression/usr.bin/join/regress.2.in
@@ -0,0 +1,4 @@
+!Name,Data2
+Foo,Bar
+Baz,2
+Foobar,1
diff --git a/tools/regression/usr.bin/join/regress.out b/tools/regression/usr.bin/join/regress.out
new file mode 100644
index 0000000..fa75c88
--- /dev/null
+++ b/tools/regression/usr.bin/join/regress.out
@@ -0,0 +1,5 @@
+!Name,Data1,Data2
+Foo,1,Bar
+Bar,2,(unknown)
+Baz,3,2
+Foobar,(unknown),1
diff --git a/tools/regression/usr.bin/join/regress.sh b/tools/regression/usr.bin/join/regress.sh
new file mode 100644
index 0000000..5807c14
--- /dev/null
+++ b/tools/regression/usr.bin/join/regress.sh
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+echo 1..1
+
+REGRESSION_START($1)
+
+REGRESSION_TEST_ONE(`join -t , -a1 -a2 -e "(unknown)" -o 0,1.2,2.2 regress.1.in regress.2.in')
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/join/regress.t b/tools/regression/usr.bin/join/regress.t
new file mode 100644
index 0000000..a82aacd
--- /dev/null
+++ b/tools/regression/usr.bin/join/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+m4 ../regress.m4 regress.sh | sh
diff --git a/tools/regression/usr.bin/jot/Makefile b/tools/regression/usr.bin/jot/Makefile
new file mode 100644
index 0000000..b937d41
--- /dev/null
+++ b/tools/regression/usr.bin/jot/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}
diff --git a/tools/regression/usr.bin/jot/regress.ascii.out b/tools/regression/usr.bin/jot/regress.ascii.out
new file mode 100644
index 0000000..abcfb84
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.ascii.out
Binary files differ
diff --git a/tools/regression/usr.bin/jot/regress.block.out b/tools/regression/usr.bin/jot/regress.block.out
new file mode 100644
index 0000000..a6f4536
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.block.out
@@ -0,0 +1,512 @@
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
diff --git a/tools/regression/usr.bin/jot/regress.dddh.out b/tools/regression/usr.bin/jot/regress.dddh.out
new file mode 100644
index 0000000..d0da901
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.dddh.out
@@ -0,0 +1,100 @@
+1
+3
+5
+7
+9
+11
+13
+15
+17
+19
+21
+23
+25
+27
+29
+31
+33
+35
+37
+39
+41
+43
+45
+47
+49
+51
+53
+55
+57
+59
+61
+63
+65
+67
+69
+71
+73
+75
+77
+79
+81
+83
+85
+87
+89
+91
+93
+95
+97
+99
+101
+103
+105
+107
+109
+111
+113
+115
+117
+119
+121
+123
+125
+127
+129
+131
+133
+135
+137
+139
+141
+143
+145
+147
+149
+151
+153
+155
+157
+159
+161
+163
+165
+167
+169
+171
+173
+175
+177
+179
+181
+183
+185
+187
+189
+191
+193
+195
+197
+199
diff --git a/tools/regression/usr.bin/jot/regress.ddhd.out b/tools/regression/usr.bin/jot/regress.ddhd.out
new file mode 100644
index 0000000..544a1ea
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.ddhd.out
@@ -0,0 +1,100 @@
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
diff --git a/tools/regression/usr.bin/jot/regress.ddhd2.out b/tools/regression/usr.bin/jot/regress.ddhd2.out
new file mode 100644
index 0000000..6e21bc7
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.ddhd2.out
@@ -0,0 +1,100 @@
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
diff --git a/tools/regression/usr.bin/jot/regress.ddhh.out b/tools/regression/usr.bin/jot/regress.ddhh.out
new file mode 100644
index 0000000..46066d0
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.ddhh.out
@@ -0,0 +1,100 @@
+-78
+-76
+-74
+-72
+-70
+-68
+-66
+-64
+-62
+-60
+-58
+-56
+-54
+-52
+-50
+-48
+-46
+-44
+-42
+-40
+-38
+-36
+-34
+-32
+-30
+-28
+-26
+-24
+-22
+-20
+-18
+-16
+-14
+-12
+-10
+-8
+-6
+-4
+-2
+0
+2
+4
+6
+8
+10
+12
+14
+16
+18
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
+80
+82
+84
+86
+88
+90
+92
+94
+96
+98
+100
+102
+104
+106
+108
+110
+112
+114
+116
+118
+120
diff --git a/tools/regression/usr.bin/jot/regress.ddhh2.out b/tools/regression/usr.bin/jot/regress.ddhh2.out
new file mode 100644
index 0000000..9299c4c
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.ddhh2.out
@@ -0,0 +1,100 @@
+-38
+-36
+-34
+-32
+-30
+-28
+-26
+-24
+-22
+-20
+-18
+-16
+-14
+-12
+-10
+-8
+-6
+-4
+-2
+0
+2
+4
+6
+8
+10
+12
+14
+16
+18
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
+80
+82
+84
+86
+88
+90
+92
+94
+96
+98
+100
+102
+104
+106
+108
+110
+112
+114
+116
+118
+120
+122
+124
+126
+128
+130
+132
+134
+136
+138
+140
+142
+144
+146
+148
+150
+152
+154
+156
+158
+160
diff --git a/tools/regression/usr.bin/jot/regress.dhdd.out b/tools/regression/usr.bin/jot/regress.dhdd.out
new file mode 100644
index 0000000..d61477b
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.dhdd.out
@@ -0,0 +1,100 @@
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
diff --git a/tools/regression/usr.bin/jot/regress.dhdh.out b/tools/regression/usr.bin/jot/regress.dhdh.out
new file mode 100644
index 0000000..1fc43dc
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.dhdh.out
@@ -0,0 +1,100 @@
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
+80
+82
+84
+86
+88
+90
+92
+94
+96
+98
+100
+102
+104
+106
+108
+110
+112
+114
+116
+118
+120
+122
+124
+126
+128
+130
+132
+134
+136
+138
+140
+142
+144
+146
+148
+150
+152
+154
+156
+158
+160
+162
+164
+166
+168
+170
+172
+174
+176
+178
+180
+182
+184
+186
+188
+190
+192
+194
+196
+198
+200
+202
+204
+206
+208
+210
+212
+214
+216
+218
diff --git a/tools/regression/usr.bin/jot/regress.dhhd.out b/tools/regression/usr.bin/jot/regress.dhhd.out
new file mode 100644
index 0000000..d21b134
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.dhhd.out
@@ -0,0 +1,101 @@
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
diff --git a/tools/regression/usr.bin/jot/regress.dhhd2.out b/tools/regression/usr.bin/jot/regress.dhhd2.out
new file mode 100644
index 0000000..315826d
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.dhhd2.out
@@ -0,0 +1,141 @@
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
diff --git a/tools/regression/usr.bin/jot/regress.dhhh.out b/tools/regression/usr.bin/jot/regress.dhhh.out
new file mode 100644
index 0000000..302eb42
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.dhhh.out
@@ -0,0 +1,51 @@
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
+80
+82
+84
+86
+88
+90
+92
+94
+96
+98
+100
+102
+104
+106
+108
+110
+112
+114
+116
+118
+120
diff --git a/tools/regression/usr.bin/jot/regress.dhhh2.out b/tools/regression/usr.bin/jot/regress.dhhh2.out
new file mode 100644
index 0000000..f56b35b
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.dhhh2.out
@@ -0,0 +1,71 @@
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
+80
+82
+84
+86
+88
+90
+92
+94
+96
+98
+100
+102
+104
+106
+108
+110
+112
+114
+116
+118
+120
+122
+124
+126
+128
+130
+132
+134
+136
+138
+140
+142
+144
+146
+148
+150
+152
+154
+156
+158
+160
diff --git a/tools/regression/usr.bin/jot/regress.ed.out b/tools/regression/usr.bin/jot/regress.ed.out
new file mode 100644
index 0000000..d82a36d
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.ed.out
@@ -0,0 +1,30 @@
+2s/old/new/
+7s/old/new/
+12s/old/new/
+17s/old/new/
+22s/old/new/
+27s/old/new/
+32s/old/new/
+37s/old/new/
+42s/old/new/
+47s/old/new/
+52s/old/new/
+57s/old/new/
+62s/old/new/
+67s/old/new/
+72s/old/new/
+77s/old/new/
+82s/old/new/
+87s/old/new/
+92s/old/new/
+97s/old/new/
+102s/old/new/
+107s/old/new/
+112s/old/new/
+117s/old/new/
+122s/old/new/
+127s/old/new/
+132s/old/new/
+137s/old/new/
+142s/old/new/
+147s/old/new/
diff --git a/tools/regression/usr.bin/jot/regress.grep.out b/tools/regression/usr.bin/jot/regress.grep.out
new file mode 100644
index 0000000..b6578ef
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.grep.out
@@ -0,0 +1 @@
+................................................................................
diff --git a/tools/regression/usr.bin/jot/regress.hddd.out b/tools/regression/usr.bin/jot/regress.hddd.out
new file mode 100644
index 0000000..96cc558
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hddd.out
@@ -0,0 +1,50 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
diff --git a/tools/regression/usr.bin/jot/regress.hddd2.out b/tools/regression/usr.bin/jot/regress.hddd2.out
new file mode 100644
index 0000000..e8823e1
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hddd2.out
@@ -0,0 +1,30 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
diff --git a/tools/regression/usr.bin/jot/regress.hddh.out b/tools/regression/usr.bin/jot/regress.hddh.out
new file mode 100644
index 0000000..7927325
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hddh.out
@@ -0,0 +1,50 @@
+1
+3
+5
+7
+9
+11
+13
+15
+17
+19
+21
+23
+25
+27
+29
+31
+33
+35
+37
+39
+41
+43
+45
+47
+49
+51
+53
+55
+57
+59
+61
+63
+65
+67
+69
+71
+73
+75
+77
+79
+81
+83
+85
+87
+89
+91
+93
+95
+97
+99
diff --git a/tools/regression/usr.bin/jot/regress.hddh2.out b/tools/regression/usr.bin/jot/regress.hddh2.out
new file mode 100644
index 0000000..da7d98b
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hddh2.out
@@ -0,0 +1,30 @@
+1
+3
+5
+7
+9
+11
+13
+15
+17
+19
+21
+23
+25
+27
+29
+31
+33
+35
+37
+39
+41
+43
+45
+47
+49
+51
+53
+55
+57
+59
diff --git a/tools/regression/usr.bin/jot/regress.hdhd.out b/tools/regression/usr.bin/jot/regress.hdhd.out
new file mode 100644
index 0000000..32ee48f
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hdhd.out
@@ -0,0 +1,50 @@
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
diff --git a/tools/regression/usr.bin/jot/regress.hdhd2.out b/tools/regression/usr.bin/jot/regress.hdhd2.out
new file mode 100644
index 0000000..eaa2cdc
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hdhd2.out
@@ -0,0 +1,30 @@
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
diff --git a/tools/regression/usr.bin/jot/regress.hdhh.out b/tools/regression/usr.bin/jot/regress.hdhh.out
new file mode 100644
index 0000000..d06ebfa
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hdhh.out
@@ -0,0 +1,50 @@
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
+80
+82
+84
+86
+88
+90
+92
+94
+96
+98
+100
+102
+104
+106
+108
+110
+112
+114
+116
+118
+120
diff --git a/tools/regression/usr.bin/jot/regress.hdhh2.out b/tools/regression/usr.bin/jot/regress.hdhh2.out
new file mode 100644
index 0000000..3a412e6
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hdhh2.out
@@ -0,0 +1,30 @@
+102
+104
+106
+108
+110
+112
+114
+116
+118
+120
+122
+124
+126
+128
+130
+132
+134
+136
+138
+140
+142
+144
+146
+148
+150
+152
+154
+156
+158
+160
diff --git a/tools/regression/usr.bin/jot/regress.hhdd.out b/tools/regression/usr.bin/jot/regress.hhdd.out
new file mode 100644
index 0000000..8d9aa35
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hhdd.out
@@ -0,0 +1,50 @@
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
diff --git a/tools/regression/usr.bin/jot/regress.hhdd2.out b/tools/regression/usr.bin/jot/regress.hhdd2.out
new file mode 100644
index 0000000..ae3c906
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hhdd2.out
@@ -0,0 +1,30 @@
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
diff --git a/tools/regression/usr.bin/jot/regress.hhdh.out b/tools/regression/usr.bin/jot/regress.hhdh.out
new file mode 100644
index 0000000..520f4ef
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hhdh.out
@@ -0,0 +1,50 @@
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
+80
+82
+84
+86
+88
+90
+92
+94
+96
+98
+100
+102
+104
+106
+108
+110
+112
+114
+116
+118
diff --git a/tools/regression/usr.bin/jot/regress.hhdh2.out b/tools/regression/usr.bin/jot/regress.hhdh2.out
new file mode 100644
index 0000000..5b289bf
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hhdh2.out
@@ -0,0 +1,30 @@
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
diff --git a/tools/regression/usr.bin/jot/regress.hhhd.out b/tools/regression/usr.bin/jot/regress.hhhd.out
new file mode 100644
index 0000000..f5ddbc5
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hhhd.out
@@ -0,0 +1,50 @@
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+47
+49
+51
+53
+55
+57
+59
+61
+63
+65
+67
+69
+71
+73
+75
+77
+79
+81
+83
+85
+87
+89
+91
+93
+96
+98
+100
+102
+104
+106
+108
+110
+112
+114
+116
+118
+120
diff --git a/tools/regression/usr.bin/jot/regress.hhhd2.out b/tools/regression/usr.bin/jot/regress.hhhd2.out
new file mode 100644
index 0000000..e6a8c4f
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hhhd2.out
@@ -0,0 +1,30 @@
+20
+25
+30
+34
+39
+44
+49
+54
+59
+63
+68
+73
+78
+83
+88
+92
+97
+102
+107
+112
+117
+121
+126
+131
+136
+141
+146
+150
+155
+160
diff --git a/tools/regression/usr.bin/jot/regress.hhhh.out b/tools/regression/usr.bin/jot/regress.hhhh.out
new file mode 100644
index 0000000..520f4ef
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hhhh.out
@@ -0,0 +1,50 @@
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
+80
+82
+84
+86
+88
+90
+92
+94
+96
+98
+100
+102
+104
+106
+108
+110
+112
+114
+116
+118
diff --git a/tools/regression/usr.bin/jot/regress.hhhh2.out b/tools/regression/usr.bin/jot/regress.hhhh2.out
new file mode 100644
index 0000000..5b289bf
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.hhhh2.out
@@ -0,0 +1,30 @@
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+72
+74
+76
+78
diff --git a/tools/regression/usr.bin/jot/regress.n21.out b/tools/regression/usr.bin/jot/regress.n21.out
new file mode 100644
index 0000000..89b0879
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.n21.out
@@ -0,0 +1,21 @@
+-1.00
+-0.90
+-0.80
+-0.70
+-0.60
+-0.50
+-0.40
+-0.30
+-0.20
+-0.10
+-0.00
+0.10
+0.20
+0.30
+0.40
+0.50
+0.60
+0.70
+0.80
+0.90
+1.00
diff --git a/tools/regression/usr.bin/jot/regress.sh b/tools/regression/usr.bin/jot/regress.sh
new file mode 100644
index 0000000..c71ade8
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.sh
@@ -0,0 +1,64 @@
+# $FreeBSD$
+
+echo 1..56
+
+REGRESSION_START($1)
+
+REGRESSION_TEST(`x', `jot -w "%X" -s , 100 1 200')
+REGRESSION_TEST(`hhhh', `jot 50 20 120 2')
+REGRESSION_TEST(`hhhd', `jot 50 20 120 -')
+REGRESSION_TEST(`hhdh', `jot 50 20 - 2')
+REGRESSION_TEST(`hhdd', `jot 50 20 - -')
+REGRESSION_TEST(`hdhh', `jot 50 - 120 2')
+REGRESSION_TEST(`hdhd', `jot 50 - 120 -')
+REGRESSION_TEST(`hddh', `jot 50 - - 2')
+REGRESSION_TEST(`hddd', `jot 50 - - -')
+REGRESSION_TEST(`dhhh', `jot - 20 120 2')
+REGRESSION_TEST(`dhhd', `jot - 20 120 -')
+REGRESSION_TEST(`dhdh', `jot - 20 - 2')
+REGRESSION_TEST(`dhdd', `jot - 20 - -')
+REGRESSION_TEST(`ddhh', `jot - - 120 2')
+REGRESSION_TEST(`ddhd', `jot - - 120 -')
+REGRESSION_TEST(`dddh', `jot - - - 2')
+REGRESSION_TEST(`hhhh2', `jot 30 20 160 2')
+REGRESSION_TEST(`hhhd2', `jot 30 20 160 -')
+REGRESSION_TEST(`hhdh2', `jot 30 20 - 2')
+REGRESSION_TEST(`hhdd2', `jot 30 20 - -')
+REGRESSION_TEST(`hdhh2', `jot 30 - 160 2')
+REGRESSION_TEST(`hdhd2', `jot 30 - 160 -')
+REGRESSION_TEST(`hddh2', `jot 30 - - 2')
+REGRESSION_TEST(`hddd2', `jot 30 - - -')
+REGRESSION_TEST(`dhhh2', `jot - 20 160 2')
+REGRESSION_TEST(`dhhd2', `jot - 20 160 -')
+REGRESSION_TEST(`ddhh2', `jot - - 160 2')
+REGRESSION_TEST(`n21', `jot 21 -1 1.00')
+REGRESSION_TEST(`ascii', `jot -c 128 0')
+REGRESSION_TEST(`xaa', `jot -w xa%c 26 a')
+REGRESSION_TEST(`yes', `jot -b yes 10')
+REGRESSION_TEST(`ed', `jot -w %ds/old/new/ 30 2 - 5')
+REGRESSION_TEST(`stutter', `jot - 9 0 -.5')
+REGRESSION_TEST(`block', `jot -b x 512')
+REGRESSION_TEST(`tabs', `jot -s, - 10 132 4')
+REGRESSION_TEST(`grep', `jot -s "" -b . 80')
+REGRESSION_TEST(`wf', `jot -w "a%.1fb" 10')
+REGRESSION_TEST(`we', `jot -w "a%eb" 10')
+REGRESSION_TEST(`wwe', `jot -w "a%-15eb" 10')
+REGRESSION_TEST(`wg', `jot -w "a%20gb" 10')
+REGRESSION_TEST(`wc', `jot -w "a%cb" 10 33 43')
+REGRESSION_TEST(`wgd', `jot -w "a%gb" 10 .2')
+REGRESSION_TEST(`wu', `jot -w "a%ub" 10')
+REGRESSION_TEST(`wo', `jot -w "a%ob" 10')
+REGRESSION_TEST(`wx', `jot -w "a%xb" 10')
+REGRESSION_TEST(`wX', `jot -w "a%Xb" 10')
+REGRESSION_TEST(`wXl', `jot -w "a%Xb" 10 2147483648')
+REGRESSION_TEST(`wdl', `jot -w "a%db" 10 2147483648')
+REGRESSION_TEST(`wxn', `jot -w "a%xb" 10 -5')
+REGRESSION_TEST(`wdn', `jot -w "a%db" 10 -5')
+REGRESSION_TEST(`wp1', `jot -w "%%%d%%%%" 10')
+REGRESSION_TEST(`wp2', `jot -w "%d%%d%%" 10')
+REGRESSION_TEST(`wp3', `jot -w "a%%A%%%d%%B%%b" 10')
+REGRESSION_TEST(`wp4', `jot -w "%%d%d%%d%%" 10')
+REGRESSION_TEST(`wp5', `jot -w ftp://www.example.com/pub/uploaded%%20files/disk%03d.iso 10')
+REGRESSION_TEST(`wp6', `jot -w "%d%" 10')
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/jot/regress.stutter.out b/tools/regression/usr.bin/jot/regress.stutter.out
new file mode 100644
index 0000000..10eb87d
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.stutter.out
@@ -0,0 +1,19 @@
+9
+8
+8
+8
+7
+6
+6
+6
+5
+4
+4
+4
+3
+2
+2
+2
+1
+0
+0
diff --git a/tools/regression/usr.bin/jot/regress.t b/tools/regression/usr.bin/jot/regress.t
new file mode 100644
index 0000000..a82aacd
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+m4 ../regress.m4 regress.sh | sh
diff --git a/tools/regression/usr.bin/jot/regress.tabs.out b/tools/regression/usr.bin/jot/regress.tabs.out
new file mode 100644
index 0000000..7859413
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.tabs.out
@@ -0,0 +1 @@
+10,14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126,130
diff --git a/tools/regression/usr.bin/jot/regress.wX.out b/tools/regression/usr.bin/jot/regress.wX.out
new file mode 100644
index 0000000..dc7f5e9
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wX.out
@@ -0,0 +1,10 @@
+a1b
+a2b
+a3b
+a4b
+a5b
+a6b
+a7b
+a8b
+a9b
+aAb
diff --git a/tools/regression/usr.bin/jot/regress.wXl.out b/tools/regression/usr.bin/jot/regress.wXl.out
new file mode 100644
index 0000000..cf6b9b7
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wXl.out
@@ -0,0 +1,10 @@
+a80000000b
+a80000001b
+a80000002b
+a80000003b
+a80000004b
+a80000005b
+a80000006b
+a80000007b
+a80000008b
+a80000009b
diff --git a/tools/regression/usr.bin/jot/regress.wc.out b/tools/regression/usr.bin/jot/regress.wc.out
new file mode 100644
index 0000000..f6e77d9
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wc.out
@@ -0,0 +1,10 @@
+a!b
+a"b
+a#b
+a$b
+a%b
+a&b
+a'b
+a(b
+a)b
+a+b
diff --git a/tools/regression/usr.bin/jot/regress.wdl.out b/tools/regression/usr.bin/jot/regress.wdl.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wdl.out
diff --git a/tools/regression/usr.bin/jot/regress.wdn.out b/tools/regression/usr.bin/jot/regress.wdn.out
new file mode 100644
index 0000000..c4027de
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wdn.out
@@ -0,0 +1,10 @@
+a-5b
+a-4b
+a-3b
+a-2b
+a-1b
+a0b
+a1b
+a2b
+a3b
+a4b
diff --git a/tools/regression/usr.bin/jot/regress.we.out b/tools/regression/usr.bin/jot/regress.we.out
new file mode 100644
index 0000000..5a3727d
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.we.out
@@ -0,0 +1,10 @@
+a1.000000e+00b
+a2.000000e+00b
+a3.000000e+00b
+a4.000000e+00b
+a5.000000e+00b
+a6.000000e+00b
+a7.000000e+00b
+a8.000000e+00b
+a9.000000e+00b
+a1.000000e+01b
diff --git a/tools/regression/usr.bin/jot/regress.wf.out b/tools/regression/usr.bin/jot/regress.wf.out
new file mode 100644
index 0000000..7fd3021
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wf.out
@@ -0,0 +1,10 @@
+a1.0b
+a2.0b
+a3.0b
+a4.0b
+a5.0b
+a6.0b
+a7.0b
+a8.0b
+a9.0b
+a10.0b
diff --git a/tools/regression/usr.bin/jot/regress.wg.out b/tools/regression/usr.bin/jot/regress.wg.out
new file mode 100644
index 0000000..5c33e35
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wg.out
@@ -0,0 +1,10 @@
+a 1b
+a 2b
+a 3b
+a 4b
+a 5b
+a 6b
+a 7b
+a 8b
+a 9b
+a 10b
diff --git a/tools/regression/usr.bin/jot/regress.wgd.out b/tools/regression/usr.bin/jot/regress.wgd.out
new file mode 100644
index 0000000..0f3f96d0
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wgd.out
@@ -0,0 +1,10 @@
+a0.2b
+a1.2b
+a2.2b
+a3.2b
+a4.2b
+a5.2b
+a6.2b
+a7.2b
+a8.2b
+a9.2b
diff --git a/tools/regression/usr.bin/jot/regress.wo.out b/tools/regression/usr.bin/jot/regress.wo.out
new file mode 100644
index 0000000..4c89c92
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wo.out
@@ -0,0 +1,10 @@
+a1b
+a2b
+a3b
+a4b
+a5b
+a6b
+a7b
+a10b
+a11b
+a12b
diff --git a/tools/regression/usr.bin/jot/regress.wp1.out b/tools/regression/usr.bin/jot/regress.wp1.out
new file mode 100644
index 0000000..6a5e94c
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wp1.out
@@ -0,0 +1,10 @@
+%1%%
+%2%%
+%3%%
+%4%%
+%5%%
+%6%%
+%7%%
+%8%%
+%9%%
+%10%%
diff --git a/tools/regression/usr.bin/jot/regress.wp2.out b/tools/regression/usr.bin/jot/regress.wp2.out
new file mode 100644
index 0000000..a489d69
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wp2.out
@@ -0,0 +1,10 @@
+1%d%
+2%d%
+3%d%
+4%d%
+5%d%
+6%d%
+7%d%
+8%d%
+9%d%
+10%d%
diff --git a/tools/regression/usr.bin/jot/regress.wp3.out b/tools/regression/usr.bin/jot/regress.wp3.out
new file mode 100644
index 0000000..95e31bb
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wp3.out
@@ -0,0 +1,10 @@
+a%A%1%B%b
+a%A%2%B%b
+a%A%3%B%b
+a%A%4%B%b
+a%A%5%B%b
+a%A%6%B%b
+a%A%7%B%b
+a%A%8%B%b
+a%A%9%B%b
+a%A%10%B%b
diff --git a/tools/regression/usr.bin/jot/regress.wp4.out b/tools/regression/usr.bin/jot/regress.wp4.out
new file mode 100644
index 0000000..cd177b2
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wp4.out
@@ -0,0 +1,10 @@
+%d1%d%
+%d2%d%
+%d3%d%
+%d4%d%
+%d5%d%
+%d6%d%
+%d7%d%
+%d8%d%
+%d9%d%
+%d10%d%
diff --git a/tools/regression/usr.bin/jot/regress.wp5.out b/tools/regression/usr.bin/jot/regress.wp5.out
new file mode 100644
index 0000000..2889d8f
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wp5.out
@@ -0,0 +1,10 @@
+ftp://www.example.com/pub/uploaded%20files/disk001.iso
+ftp://www.example.com/pub/uploaded%20files/disk002.iso
+ftp://www.example.com/pub/uploaded%20files/disk003.iso
+ftp://www.example.com/pub/uploaded%20files/disk004.iso
+ftp://www.example.com/pub/uploaded%20files/disk005.iso
+ftp://www.example.com/pub/uploaded%20files/disk006.iso
+ftp://www.example.com/pub/uploaded%20files/disk007.iso
+ftp://www.example.com/pub/uploaded%20files/disk008.iso
+ftp://www.example.com/pub/uploaded%20files/disk009.iso
+ftp://www.example.com/pub/uploaded%20files/disk010.iso
diff --git a/tools/regression/usr.bin/jot/regress.wp6.out b/tools/regression/usr.bin/jot/regress.wp6.out
new file mode 100644
index 0000000..1f097f0
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wp6.out
@@ -0,0 +1,10 @@
+1%
+2%
+3%
+4%
+5%
+6%
+7%
+8%
+9%
+10%
diff --git a/tools/regression/usr.bin/jot/regress.wu.out b/tools/regression/usr.bin/jot/regress.wu.out
new file mode 100644
index 0000000..c39e5f6
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wu.out
@@ -0,0 +1,10 @@
+a1b
+a2b
+a3b
+a4b
+a5b
+a6b
+a7b
+a8b
+a9b
+a10b
diff --git a/tools/regression/usr.bin/jot/regress.wwe.out b/tools/regression/usr.bin/jot/regress.wwe.out
new file mode 100644
index 0000000..7c873a5
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wwe.out
@@ -0,0 +1,10 @@
+a1.000000e+00 b
+a2.000000e+00 b
+a3.000000e+00 b
+a4.000000e+00 b
+a5.000000e+00 b
+a6.000000e+00 b
+a7.000000e+00 b
+a8.000000e+00 b
+a9.000000e+00 b
+a1.000000e+01 b
diff --git a/tools/regression/usr.bin/jot/regress.wx.out b/tools/regression/usr.bin/jot/regress.wx.out
new file mode 100644
index 0000000..5520d01
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wx.out
@@ -0,0 +1,10 @@
+a1b
+a2b
+a3b
+a4b
+a5b
+a6b
+a7b
+a8b
+a9b
+aab
diff --git a/tools/regression/usr.bin/jot/regress.wxn.out b/tools/regression/usr.bin/jot/regress.wxn.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.wxn.out
diff --git a/tools/regression/usr.bin/jot/regress.x.out b/tools/regression/usr.bin/jot/regress.x.out
new file mode 100644
index 0000000..b109793
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.x.out
@@ -0,0 +1 @@
+1,3,5,7,9,B,D,F,11,13,15,17,19,1B,1D,1F,21,23,25,27,29,2B,2D,2F,31,33,35,37,39,3B,3D,3F,41,43,45,47,49,4B,4D,4F,51,53,55,57,59,5B,5D,5F,61,63,65,67,69,6B,6D,6F,71,73,75,77,79,7B,7D,7F,81,83,85,87,89,8B,8D,8F,91,93,95,97,99,9B,9D,9F,A1,A3,A5,A7,A9,AB,AD,AF,B1,B3,B5,B7,B9,BB,BD,BF,C1,C3,C5,C8
diff --git a/tools/regression/usr.bin/jot/regress.xaa.out b/tools/regression/usr.bin/jot/regress.xaa.out
new file mode 100644
index 0000000..b14f9a0
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.xaa.out
@@ -0,0 +1,26 @@
+xaa
+xab
+xac
+xad
+xae
+xaf
+xag
+xah
+xai
+xaj
+xak
+xal
+xam
+xan
+xao
+xap
+xaq
+xar
+xas
+xat
+xau
+xav
+xaw
+xax
+xay
+xaz
diff --git a/tools/regression/usr.bin/jot/regress.yes.out b/tools/regression/usr.bin/jot/regress.yes.out
new file mode 100644
index 0000000..74e8d37
--- /dev/null
+++ b/tools/regression/usr.bin/jot/regress.yes.out
@@ -0,0 +1,10 @@
+yes
+yes
+yes
+yes
+yes
+yes
+yes
+yes
+yes
+yes
diff --git a/tools/regression/usr.bin/lastcomm/Makefile b/tools/regression/usr.bin/lastcomm/Makefile
new file mode 100644
index 0000000..930f3ff
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+all: regress
+
+regress: regress.t
+ ./regress.t
diff --git a/tools/regression/usr.bin/lastcomm/README b/tools/regression/usr.bin/lastcomm/README
new file mode 100644
index 0000000..62e0281
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/README
@@ -0,0 +1,10 @@
+$FreeBSD$
+
+To create the files for regression testing do the following.
+
+1. Run values.sh for a given architecture and accounting version.
+2. Unpack the generated file and rename acct into VERSION-ARCH.acct.
+3. Run lastcomm -cuseS -f VERSION-ARCH-acct.in |
+ awk '{$4 = ""; print}' >VERSION-ARCH.out.
+4. Compare the reported values in VERSION-ARCH.out against the
+ *.time values found in the file that values.sh generated.
diff --git a/tools/regression/usr.bin/lastcomm/regress.t b/tools/regression/usr.bin/lastcomm/regress.t
new file mode 100644
index 0000000..6abca0b
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/regress.t
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+DIR=`dirname $0`
+ARCH=`uname -m`
+
+check()
+{
+ NUM=$1
+ shift
+ # Remove tty field, which varies between systems.
+ awk '{$4 = ""; print}' |
+ if diff -q - $DIR/$1
+ then
+ echo "ok $NUM"
+ else
+ echo "not ok $NUM"
+ fi
+}
+
+
+cat $DIR/v1-$ARCH-acct.in $DIR/v2-$ARCH-acct.in >$DIR/v1v2-$ARCH-acct.in
+cat $DIR/v2-$ARCH.out $DIR/v1-$ARCH.out >$DIR/v1v2-$ARCH.out
+
+echo 1..6
+
+lastcomm -cesuS -f $DIR/v1-$ARCH-acct.in | check 1 v1-$ARCH.out
+lastcomm -cesuS -f - <$DIR/v1-$ARCH-acct.in | tail -r | check 2 v1-$ARCH.out
+lastcomm -cesuS -f $DIR/v2-$ARCH-acct.in | check 3 v2-$ARCH.out
+lastcomm -cesuS -f - <$DIR/v2-$ARCH-acct.in | tail -r | check 4 v2-$ARCH.out
+lastcomm -cesuS -f $DIR/v1v2-$ARCH-acct.in | check 5 v1v2-$ARCH.out
+lastcomm -cesuS -f - <$DIR/v1v2-$ARCH-acct.in | tail -r | check 6 v1v2-$ARCH.out
+
+rm $DIR/v1v2-$ARCH-acct.in
+rm $DIR/v1v2-$ARCH.out
+
+exit 0
diff --git a/tools/regression/usr.bin/lastcomm/v1-amd64-acct.in b/tools/regression/usr.bin/lastcomm/v1-amd64-acct.in
new file mode 100644
index 0000000..50546a3
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v1-amd64-acct.in
Binary files differ
diff --git a/tools/regression/usr.bin/lastcomm/v1-amd64.out b/tools/regression/usr.bin/lastcomm/v1-amd64.out
new file mode 100644
index 0000000..c0a379f
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v1-amd64.out
@@ -0,0 +1,28 @@
+core -FDX root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+core -DX root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+cc - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 06:44
+ld - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+as - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+cc1 - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+time - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+time -F root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+ln - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+time - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+time -F root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+ln - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+time - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+time -F root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+ln - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
+time - root 0.000 secs 0.000 us 0.000 sy 0.234 es Wed May 16 06:44
+diff - root 0.203 secs 0.203 us 0.000 sy 0.234 es Wed May 16 06:44
+time - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 06:44
+dd - root 0.016 secs 0.000 us 0.016 sy 0.016 es Wed May 16 06:44
+time - root 0.000 secs 0.000 us 0.000 sy 3.016 es Wed May 16 06:44
+sleep - root 0.000 secs 0.000 us 0.000 sy 3.000 es Wed May 16 06:44
+time - root 0.000 secs 0.000 us 0.000 sy 1.938 es Wed May 16 06:44
+find - root 0.250 secs 0.031 us 0.219 sy 1.938 es Wed May 16 06:44
+time - root 0.000 secs 0.000 us 0.000 sy 3.062 es Wed May 16 06:44
+egrep - root 3.031 secs 3.031 us 0.000 sy 3.062 es Wed May 16 06:44
+time - root 0.000 secs 0.000 us 0.000 sy 0.188 es Wed May 16 06:44
+awk - root 0.172 secs 0.172 us 0.000 sy 0.188 es Wed May 16 06:44
+accton - root 0.000 secs 0.000 us 0.000 sy 0.000 es Wed May 16 06:44
diff --git a/tools/regression/usr.bin/lastcomm/v1-i386-acct.in b/tools/regression/usr.bin/lastcomm/v1-i386-acct.in
new file mode 100644
index 0000000..f427c0e
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v1-i386-acct.in
Binary files differ
diff --git a/tools/regression/usr.bin/lastcomm/v1-i386.out b/tools/regression/usr.bin/lastcomm/v1-i386.out
new file mode 100644
index 0000000..86ec9e2
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v1-i386.out
@@ -0,0 +1,28 @@
+core -FDX root 0.000 secs 0.000 us 0.000 sy 0.031 es Fri May 18 11:34
+core -DX root 0.000 secs 0.000 us 0.000 sy 0.031 es Fri May 18 11:34
+cc - root 0.000 secs 0.000 us 0.000 sy 0.469 es Fri May 18 11:34
+ld - root 0.000 secs 0.000 us 0.000 sy 0.109 es Fri May 18 11:34
+as - root 0.000 secs 0.000 us 0.000 sy 0.047 es Fri May 18 11:34
+cc1 - root 0.016 secs 0.016 us 0.000 sy 0.203 es Fri May 18 11:34
+time - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
+1234567890123456 - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
+ln - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
+time - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
+1234567890123456 - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
+ln - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
+time - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
+123456789012345 - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
+ln - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:34
+time - root 0.000 secs 0.000 us 0.000 sy 0.359 es Fri May 18 11:34
+diff - root 0.312 secs 0.297 us 0.016 sy 0.359 es Fri May 18 11:34
+time - root 0.000 secs 0.000 us 0.000 sy 0.031 es Fri May 18 11:34
+dd - root 0.016 secs 0.000 us 0.016 sy 0.031 es Fri May 18 11:34
+time - root 0.000 secs 0.000 us 0.000 sy 3.000 es Fri May 18 11:34
+sleep - root 0.000 secs 0.000 us 0.000 sy 3.000 es Fri May 18 11:34
+time - root 0.000 secs 0.000 us 0.000 sy 3.406 es Fri May 18 11:34
+find - root 0.266 secs 0.062 us 0.203 sy 3.406 es Fri May 18 11:34
+time - root 0.000 secs 0.000 us 0.000 sy 5.047 es Fri May 18 11:33
+egrep - root 4.984 secs 4.984 us 0.000 sy 5.047 es Fri May 18 11:33
+time - root 0.000 secs 0.000 us 0.000 sy 0.484 es Fri May 18 11:33
+awk - root 0.453 secs 0.453 us 0.000 sy 0.453 es Fri May 18 11:33
+accton - root 0.000 secs 0.000 us 0.000 sy 0.000 es Fri May 18 11:33
diff --git a/tools/regression/usr.bin/lastcomm/v1-sparc64-acct.in b/tools/regression/usr.bin/lastcomm/v1-sparc64-acct.in
new file mode 100644
index 0000000..00f05b4
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v1-sparc64-acct.in
Binary files differ
diff --git a/tools/regression/usr.bin/lastcomm/v1-sparc64.out b/tools/regression/usr.bin/lastcomm/v1-sparc64.out
new file mode 100644
index 0000000..d33ae71
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v1-sparc64.out
@@ -0,0 +1,28 @@
+core -FDX root 0.000 secs 0.000 us 0.000 sy 0.031 es Wed May 16 12:16
+core -DX root 0.031 secs 0.000 us 0.031 sy 0.047 es Wed May 16 12:16
+cc - root 0.016 secs 0.000 us 0.016 sy 0.859 es Wed May 16 12:16
+ld - root 0.094 secs 0.047 us 0.047 sy 0.266 es Wed May 16 12:16
+as - root 0.016 secs 0.000 us 0.016 sy 0.094 es Wed May 16 12:16
+cc1 - root 0.094 secs 0.047 us 0.047 sy 0.375 es Wed May 16 12:16
+time - root 0.016 secs 0.000 us 0.016 sy 0.047 es Wed May 16 12:16
+1234567890123456 - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 12:16
+ln - root 0.016 secs 0.000 us 0.016 sy 0.016 es Wed May 16 12:16
+time - root 0.016 secs 0.000 us 0.016 sy 0.047 es Wed May 16 12:16
+1234567890123456 - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 12:16
+ln - root 0.016 secs 0.000 us 0.016 sy 0.016 es Wed May 16 12:16
+time - root 0.016 secs 0.000 us 0.016 sy 0.047 es Wed May 16 12:16
+123456789012345 - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 12:16
+ln - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 12:16
+time - root 0.016 secs 0.000 us 0.016 sy 1.703 es Wed May 16 12:16
+diff - root 1.641 secs 1.344 us 0.297 sy 1.672 es Wed May 16 12:16
+time - root 0.016 secs 0.000 us 0.016 sy 0.625 es Wed May 16 12:16
+dd - root 0.562 secs 0.000 us 0.562 sy 0.594 es Wed May 16 12:16
+time - root 0.016 secs 0.000 us 0.016 sy 3.047 es Wed May 16 12:16
+sleep - root 0.000 secs 0.000 us 0.000 sy 3.016 es Wed May 16 12:16
+time - root 0.016 secs 0.000 us 0.016 sy 17.219 es Wed May 16 12:16
+find - root 5.516 secs 0.562 us 4.953 sy 17.188 es Wed May 16 12:16
+time - root 0.016 secs 0.000 us 0.016 sy 30.031 es Wed May 16 12:15
+egrep - root 29.750 secs 29.688 us 0.062 sy 30.000 es Wed May 16 12:15
+time - root 0.016 secs 0.000 us 0.016 sy 1.688 es Wed May 16 12:15
+awk - root 1.609 secs 1.594 us 0.016 sy 1.641 es Wed May 16 12:15
+accton - root 0.016 secs 0.000 us 0.016 sy 0.031 es Wed May 16 12:15
diff --git a/tools/regression/usr.bin/lastcomm/v2-amd64-acct.in b/tools/regression/usr.bin/lastcomm/v2-amd64-acct.in
new file mode 100644
index 0000000..ca7bcaa
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v2-amd64-acct.in
Binary files differ
diff --git a/tools/regression/usr.bin/lastcomm/v2-amd64.out b/tools/regression/usr.bin/lastcomm/v2-amd64.out
new file mode 100644
index 0000000..5795e63
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v2-amd64.out
@@ -0,0 +1,28 @@
+core -FDX root 0.002 secs 0.000 us 0.002 sy 0.009 es Thu May 17 00:57
+core -DX root 0.005 secs 0.000 us 0.005 sy 0.010 es Thu May 17 00:57
+cc - root 0.005 secs 0.000 us 0.005 sy 0.652 es Thu May 17 00:57
+ld - root 0.014 secs 0.005 us 0.009 sy 0.150 es Thu May 17 00:57
+as - root 0.005 secs 0.000 us 0.005 sy 0.078 es Thu May 17 00:57
+cc1 - root 0.024 secs 0.008 us 0.016 sy 0.347 es Thu May 17 00:57
+time - root 0.003 secs 0.000 us 0.003 sy 0.005 es Thu May 17 00:57
+1234567890123456 - root 0.002 secs 0.000 us 0.002 sy 0.002 es Thu May 17 00:57
+ln - root 0.002 secs 0.000 us 0.002 sy 0.002 es Thu May 17 00:57
+time - root 0.003 secs 0.000 us 0.003 sy 0.005 es Thu May 17 00:57
+1234567890123456 - root 0.002 secs 0.000 us 0.002 sy 0.002 es Thu May 17 00:57
+ln - root 0.002 secs 0.000 us 0.002 sy 0.002 es Thu May 17 00:57
+time - root 0.003 secs 0.000 us 0.003 sy 0.013 es Thu May 17 00:57
+123456789012345 - root 0.002 secs 0.000 us 0.002 sy 0.010 es Thu May 17 00:57
+ln - root 0.003 secs 0.000 us 0.003 sy 0.003 es Thu May 17 00:57
+time - root 0.003 secs 0.000 us 0.003 sy 0.246 es Thu May 17 00:57
+diff - root 0.223 secs 0.164 us 0.060 sy 0.243 es Thu May 17 00:57
+time - root 0.003 secs 0.000 us 0.003 sy 0.079 es Thu May 17 00:57
+dd - root 0.076 secs 0.000 us 0.076 sy 0.076 es Thu May 17 00:57
+time - root 0.004 secs 0.000 us 0.004 sy 3.006 es Thu May 17 00:57
+sleep - root 0.002 secs 0.000 us 0.002 sy 3.002 es Thu May 17 00:57
+time - root 0.003 secs 0.000 us 0.003 sy 9.945 es Thu May 17 00:57
+find - root 0.822 secs 0.055 us 0.767 sy 9.942 es Thu May 17 00:57
+time - root 0.003 secs 0.000 us 0.003 sy 3.313 es Thu May 17 00:57
+egrep - root 3.247 secs 3.247 us 0.000 sy 3.310 es Thu May 17 00:57
+time - root 0.003 secs 0.000 us 0.003 sy 0.185 es Thu May 17 00:57
+awk - root 0.163 secs 0.156 us 0.007 sy 0.164 es Thu May 17 00:57
+accton - root 0.002 secs 0.000 us 0.002 sy 0.019 es Thu May 17 00:57
diff --git a/tools/regression/usr.bin/lastcomm/v2-i386-acct.in b/tools/regression/usr.bin/lastcomm/v2-i386-acct.in
new file mode 100644
index 0000000..4cdd973
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v2-i386-acct.in
Binary files differ
diff --git a/tools/regression/usr.bin/lastcomm/v2-i386.out b/tools/regression/usr.bin/lastcomm/v2-i386.out
new file mode 100644
index 0000000..61bc811
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v2-i386.out
@@ -0,0 +1,28 @@
+core -FDX root 0.000 secs 0.000 us 0.000 sy 0.005 es Fri May 18 15:13
+core -DX root 0.002 secs 0.000 us 0.002 sy 0.005 es Fri May 18 15:13
+cc - root 0.002 secs 0.000 us 0.002 sy 0.048 es Fri May 18 15:13
+ld - root 0.028 secs 0.019 us 0.009 sy 0.028 es Fri May 18 15:13
+as - root 0.002 secs 0.002 us 0.000 sy 0.002 es Fri May 18 15:13
+cc1 - root 0.016 secs 0.016 us 0.000 sy 0.016 es Fri May 18 15:13
+time - root 0.001 secs 0.000 us 0.001 sy 0.002 es Fri May 18 15:13
+1234567890123456 - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
+ln - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
+time - root 0.001 secs 0.001 us 0.000 sy 0.002 es Fri May 18 15:13
+1234567890123456 - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
+ln - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
+time - root 0.001 secs 0.000 us 0.001 sy 0.002 es Fri May 18 15:13
+123456789012345 - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
+ln - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:13
+time - root 0.001 secs 0.000 us 0.001 sy 0.425 es Fri May 18 15:13
+diff - root 0.423 secs 0.392 us 0.031 sy 0.424 es Fri May 18 15:13
+time - root 0.001 secs 0.000 us 0.001 sy 0.028 es Fri May 18 15:13
+dd - root 0.025 secs 0.000 us 0.025 sy 0.026 es Fri May 18 15:13
+time - root 0.001 secs 0.000 us 0.001 sy 3.002 es Fri May 18 15:13
+sleep - root 0.001 secs 0.000 us 0.001 sy 3.001 es Fri May 18 15:13
+time - root 0.001 secs 0.000 us 0.001 sy 0.250 es Fri May 18 15:13
+find - root 0.248 secs 0.078 us 0.171 sy 0.249 es Fri May 18 15:13
+time - root 0.001 secs 0.000 us 0.001 sy 6.724 es Fri May 18 15:12
+egrep - root 6.680 secs 6.680 us 0.000 sy 6.722 es Fri May 18 15:12
+time - root 0.001 secs 0.000 us 0.001 sy 0.450 es Fri May 18 15:12
+awk - root 0.448 secs 0.448 us 0.000 sy 0.449 es Fri May 18 15:12
+accton - root 0.001 secs 0.000 us 0.001 sy 0.001 es Fri May 18 15:12
diff --git a/tools/regression/usr.bin/lastcomm/v2-sparc64-acct.in b/tools/regression/usr.bin/lastcomm/v2-sparc64-acct.in
new file mode 100644
index 0000000..26df19e
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v2-sparc64-acct.in
Binary files differ
diff --git a/tools/regression/usr.bin/lastcomm/v2-sparc64.out b/tools/regression/usr.bin/lastcomm/v2-sparc64.out
new file mode 100644
index 0000000..f693e8e
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/v2-sparc64.out
@@ -0,0 +1,36 @@
+core -FDX root 0.010 secs 0.000 us 0.010 sy 0.042 es Sat May 19 09:17
+core -DX root 0.037 secs 0.001 us 0.036 sy 0.055 es Sat May 19 09:17
+cc - root 0.033 secs 0.002 us 0.031 sy 1.012 es Sat May 19 09:17
+ld - root 0.186 secs 0.115 us 0.071 sy 0.361 es Sat May 19 09:17
+as - root 0.030 secs 0.005 us 0.025 sy 0.126 es Sat May 19 09:17
+cc1 - root 0.105 secs 0.048 us 0.057 sy 0.417 es Sat May 19 09:17
+time - root 0.029 secs 0.001 us 0.028 sy 0.047 es Sat May 19 09:17
+1234567890123456 - root 0.017 secs 0.003 us 0.014 sy 0.019 es Sat May 19 09:17
+ln - root 0.019 secs 0.003 us 0.016 sy 0.020 es Sat May 19 09:17
+time - root 0.029 secs 0.003 us 0.025 sy 0.047 es Sat May 19 09:17
+1234567890123456 - root 0.017 secs 0.002 us 0.015 sy 0.019 es Sat May 19 09:17
+ln - root 0.019 secs 0.004 us 0.015 sy 0.020 es Sat May 19 09:17
+time - root 0.029 secs 0.004 us 0.025 sy 0.053 es Sat May 19 09:17
+123456789012345 - root 0.018 secs 0.001 us 0.016 sy 0.025 es Sat May 19 09:17
+ln - root 0.020 secs 0.001 us 0.019 sy 0.020 es Sat May 19 09:17
+time - root 0.029 secs 0.003 us 0.026 sy 1.702 es Sat May 19 09:17
+diff - root 1.636 secs 1.337 us 0.299 sy 1.674 es Sat May 19 09:17
+time - root 0.027 secs 0.002 us 0.026 sy 0.634 es Sat May 19 09:17
+dd - root 0.588 secs 0.017 us 0.571 sy 0.605 es Sat May 19 09:17
+time - root 0.028 secs 0.001 us 0.027 sy 3.049 es Sat May 19 09:17
+sleep - root 0.018 secs 0.002 us 0.016 sy 3.021 es Sat May 19 09:17
+time - root 0.029 secs 0.002 us 0.027 sy 17.970 es Sat May 19 09:17
+find - root 5.703 secs 0.555 us 5.148 sy 17.942 es Sat May 19 09:17
+time - root 0.029 secs 0.005 us 0.024 sy 27.162 es Sat May 19 09:16
+egrep - root 26.715 secs 26.632 us 0.082 sy 27.133 es Sat May 19 09:16
+logger - root 0.023 secs 0.005 us 0.018 sy 60.808 es Sat May 19 09:15
+sh -F root 0.008 secs 0.000 us 0.008 sy 60.815 es Sat May 19 09:15
+fsck - root 0.055 secs 0.008 us 0.047 sy 60.806 es Sat May 19 09:15
+fsck_ufs - root 0.028 secs 0.005 us 0.022 sy 0.140 es Sat May 19 09:16
+fsck_ufs - root 0.028 secs 0.006 us 0.022 sy 0.123 es Sat May 19 09:16
+fsck_ufs - root 0.028 secs 0.004 us 0.024 sy 0.058 es Sat May 19 09:16
+fsck_ufs - root 0.032 secs 0.004 us 0.028 sy 0.326 es Sat May 19 09:16
+sleep - root 0.019 secs 0.001 us 0.018 sy 60.085 es Sat May 19 09:15
+time - root 0.029 secs 0.005 us 0.025 sy 1.701 es Sat May 19 09:16
+awk - root 1.644 secs 1.617 us 0.028 sy 1.657 es Sat May 19 09:16
+accton - root 0.019 secs 0.003 us 0.016 sy 0.027 es Sat May 19 09:16
diff --git a/tools/regression/usr.bin/lastcomm/values.sh b/tools/regression/usr.bin/lastcomm/values.sh
new file mode 100644
index 0000000..ef2e015
--- /dev/null
+++ b/tools/regression/usr.bin/lastcomm/values.sh
@@ -0,0 +1,77 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+ACCT=acct
+RESULTS=acct.`uname -m`.tar.gz
+TMPDIR=$$.tmp
+
+run()
+{
+ /usr/bin/time -l -o $1.time "$@"
+}
+
+echo Redirecting accounting.
+
+mkdir $TMPDIR
+cd $TMPDIR
+
+:>$ACCT
+accton $ACCT
+
+echo Running commands. This should not take more than 30s.
+
+# User time
+run awk 'BEGIN {for (i = 0; i < 1000000; i++) cos(.3)}' /dev/null
+run egrep '(.)(.)(.)(.)(.)(.)(.)(.)(.)\9\8\7\6\5\4\3\2\1' /usr/share/dict/words
+
+# System time
+run find /usr/src -name xyzzy
+
+# Elapsed time
+run sleep 3
+
+# IO
+run dd if=/dev/zero bs=512 count=4096 of=zero 2>/dev/null
+
+# Memory
+run diff /usr/share/dict/words /dev/null >/dev/null
+
+# AC_COMM_LEN - 1
+ln /usr/bin/true 123456789012345
+run ./123456789012345
+
+# AC_COMM_LEN
+ln /usr/bin/true 1234567890123456
+run ./1234567890123456
+
+# AC_COMM_LEN + 1
+ln /usr/bin/true 12345678901234567
+run ./12345678901234567
+
+# Flags: core, fork, signal
+echo 'main(){volatile int s; fork(); s = *(int *)0;}' >core.c
+cc -o core core.c
+echo Generating segmentation fault.
+./core
+
+echo Turning off redirected accounting.
+
+accton
+
+echo Packing the results.
+
+sa -u $ACCT >sa.u
+lastcomm -cesuS -f $ACCT >lastcomm.cesuS
+tar -cf - acct sa.u lastcomm.cesuS *.time |
+gzip -c |
+uuencode $RESULTS >../$RESULTS.uue
+
+echo Cleaning up.
+cd ..
+rm -rf $TMPDIR
+
+echo "Done! Please send your reply, enclosing the file $RESULTS.uue"
+echo If your system runs with accounting enabled you probably need to run:
+echo accton /var/account/acct
diff --git a/tools/regression/usr.bin/m4/Makefile b/tools/regression/usr.bin/m4/Makefile
new file mode 100644
index 0000000..9903670
--- /dev/null
+++ b/tools/regression/usr.bin/m4/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ @sh ${.CURDIR}/regress.sh ${.CURDIR}
diff --git a/tools/regression/usr.bin/m4/regress.changecom.in b/tools/regression/usr.bin/m4/regress.changecom.in
new file mode 100644
index 0000000..843fa11
--- /dev/null
+++ b/tools/regression/usr.bin/m4/regress.changecom.in
@@ -0,0 +1,3 @@
+changecom
+# dnl BSD will show this in output.
+# dnl SYSV + GNU will not show this.
diff --git a/tools/regression/usr.bin/m4/regress.changecom.out b/tools/regression/usr.bin/m4/regress.changecom.out
new file mode 100644
index 0000000..128a18b
--- /dev/null
+++ b/tools/regression/usr.bin/m4/regress.changecom.out
@@ -0,0 +1,3 @@
+
+# dnl BSD will show this in output.
+# dnl SYSV + GNU will not show this.
diff --git a/tools/regression/usr.bin/m4/regress.gchangecom.out b/tools/regression/usr.bin/m4/regress.gchangecom.out
new file mode 100644
index 0000000..00aae57
--- /dev/null
+++ b/tools/regression/usr.bin/m4/regress.gchangecom.out
@@ -0,0 +1,2 @@
+
+# # \ No newline at end of file
diff --git a/tools/regression/usr.bin/m4/regress.sh b/tools/regression/usr.bin/m4/regress.sh
new file mode 100644
index 0000000..9619d52
--- /dev/null
+++ b/tools/regression/usr.bin/m4/regress.sh
@@ -0,0 +1,41 @@
+# $FreeBSD$
+
+# Go into the regression test directory, handed to us by make(1)
+TESTDIR=$1
+if [ -z "$TESTDIR" ]; then
+ TESTDIR=.
+fi
+cd $TESTDIR
+
+STATUS=0
+
+echo 1..2
+
+for test in GNU/changecom changecom; do
+ case "$test" in
+ GNU/*)
+ M4="m4 -g"
+ GNU="g"
+ test=`basename $test`
+ ;;
+ *)
+ M4="m4"
+ GNU=""
+ ;;
+ esac
+ case "$test" in
+ changecom)
+ $M4 < regress.$test.in | diff -u regress.$GNU$test.out -
+ ;;
+ esac
+ if [ $? -eq 0 ]; then
+ echo "ok - $test # Test detected no regression, output matches."
+ else
+ STATUS=$?
+ echo "not ok - $test # Test failed: regression detected. See above."
+ fi
+done
+
+exit $STATUS
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/m4/regress.t b/tools/regression/usr.bin/m4/regress.t
new file mode 100644
index 0000000..c36d834
--- /dev/null
+++ b/tools/regression/usr.bin/m4/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+sh regress.sh
diff --git a/tools/regression/usr.bin/make/README b/tools/regression/usr.bin/make/README
new file mode 100644
index 0000000..6c577ad
--- /dev/null
+++ b/tools/regression/usr.bin/make/README
@@ -0,0 +1,176 @@
+$FreeBSD$
+
+This directory contains regression tests for make(1).
+
+To invoke the tests install prove(1) from ports/devel/p5-Test-Harness and
+run 'prove -r'. Alternatively one can use 'sh ./all.sh test' and scan the
+output for '^not ok'.
+
+----------------------------------------------------------------------------
+
+The rest of this file is intented for developers.
+
+The tests are invoked via the test.sh script or prove(1) from p5-Test-Harness.
+Tests are normally executed in a special test directory that is built under
+/tmp. The reason for this is, that make tests are generally influenced by
+all file in a directory, by files in one of make's obscure object directories
+as well as in other directories make happens to look into. Therefor the
+test scripts build a clean environment in the temp directory and the
+tests are executed by cd-ing into that directory and invoking make. The
+output of the make run (standard output, standard error and the exit status)
+are written into files that are created in another directory. So the layout
+for the shell/builtin test looks like:
+
+ ./shell/builtin/ - directory with test stuff
+ /tmp/make.${USER}/shell/builtin - actual test directory
+ /tmp/make.${USER}/shell/builtin.OUTPUT - output files
+
+So a full test consists of the following steps:
+
+ setup - Set up the test environment by creating the test directory
+ and populating it with the needed files. If the test
+ directory already exists an error is printed.
+
+ run - Run the test and produce the output into the output
+ directory.
+
+ show - Show the result files on the screen.
+
+ compare - Compare the results in the output directory with those
+ in the test source directory. This just prints whether
+ the test was ok or not in the format used by prove(1).
+
+ diff - Diff the output files and the expected output files.
+
+ reset - Reset the test to its initial state.
+
+ clean - Remove both the test directory and the output directory.
+
+Each of these steps can independently be invoked with the test script
+contained in each directory. These test scripts are called test.t.
+Additionally the scripts understand the following commands:
+
+ test - Run setup, run and compare.
+
+ prove - Run setup, run, compare and clean. This is identically
+ to invoking the script without an argument.
+
+ desc - Print a short test description.
+
+ update - Update the expected results from the actual results.
+
+The test script has the following syntax:
+
+ % test.t [-v] [-m path_to_make_binary] command
+
+To invoke it via prove(1) use:
+
+ % [MAKE_PROG=path_to_make_binary] prove [options] [files/directories]
+
+Example:
+ % sh test.t -m `pwd`/../obj/make run
+ % MAKE_PROG=/usr/obj/usr/src/usr.bin/make/make prove -r
+
+The test scripts use the following environment variables that can be set
+by the user in the test script's environment:
+
+ WORK_BASE
+ - Base directory for working files. If not set
+ /tmp/make.${USER} is used.
+
+ MAKE_PROG
+ - Path to the make program to test. If not set
+ /usr/bin/make is used.
+
+The following variables are available to test scripts:
+
+ SRC_BASE
+ - test source base directory. This is determined by
+ repeatedly doing cd .. and checking for common.sh.
+ Therefor this can fail if a test source directory is
+ actually a symbolic link and is physically not located
+ below the directory containing common.sh.
+
+ SUBDIR
+ - subdirectory below WORK_BASE and SRC_BASE for current test
+
+ WORK_DIR
+ - ${WORK_BASE}/${SUBDIR}
+
+ SRC_DIR
+ - ${SRC_BASE}/${SUBDIR}
+
+The following variables and functions may be defined by the test script.
+This also lists special filenames.
+
+ DESC
+ A one-line description of the test.
+
+ TEST_MAKE_DIRS
+ A list of pairs of directory names and modes. These
+ directories are created during setup and reset. When
+ the directory already exists (during reset) only the
+ mode change is applied.
+
+ TEST_MAKE_DIRS="subdir 775 subdir/sub 555"
+
+ TEST_COPY_FILES
+ A list of pairs of file names and modes. These files
+ are copied from the source to the working directory
+ during setup and reset. When the file already exists
+ (during reset) only the mode change is applied. Files
+ may be copied from/to sub-directories. The sub-directory
+ in the working directory must already exists (see
+ TEST_MAKE_DIRS).
+
+ TEST_COPY_FILES="libtest.a 444 subdir/libfoo.a 444"
+
+ TEST_TOUCH
+ List of pairs of file names and arguments to touch(1).
+ During setup and reset for each list element touch(1)
+ is executed.
+
+ TEST_TOUCH="file1 '-t 200501011257'"
+
+ TEST_LINK
+ List of pairs of filenames. Each pair is passed to ln(1).
+ All names are prefixed with the working directory.
+
+ Makefile
+ If a file with this name exists in the source directory
+ it is automatically copied to the working directory.
+
+ setup_test()
+ If this function exists it is executed at the end of the
+ setup.
+
+ reset_test()
+ If this function exists it is executed at the end of the
+ reset.
+
+ TEST_CLEAN_FILES
+ A list of file to be deleted when resetting.
+
+ TEST_N
+ Number of tests in this script. If not set this is assumed
+ to be 1.
+
+ TEST_<number>
+ Arguments to make for test number <number>. If not set
+ the default argument of test<number> is used. To run a test
+ without argument to make, set TEST_<number> to the empty string.
+
+ TEST_<number>_SKIP
+ To skip a test (for whatever reason) this should be set
+ to a string explaining the reason for skipping the test.
+
+ TEST_<number>_TODO
+ For a test that should fail this is a short string describing
+ what the problem in make(1) is that should be fixed.
+
+ run_test()
+ Function to run a test. This function gets a single argument
+ which is the number of the test to executed. The default
+ function evaluates the variable TEST_<number> and calls
+ make with the arguments in this variable.
+
diff --git a/tools/regression/usr.bin/make/all.sh b/tools/regression/usr.bin/make/all.sh
new file mode 100644
index 0000000..42f9e73
--- /dev/null
+++ b/tools/regression/usr.bin/make/all.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+# $FreeBSD$
+
+# find all test scripts below our current directory
+SCRIPTS=`find . -name test.t`
+
+if [ -z "${SCRIPTS}" ] ; then
+ exit 0
+fi
+
+for i in ${SCRIPTS} ; do
+ (
+ cd `dirname $i`
+ sh ./test.t $1
+ )
+done
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/Makefile b/tools/regression/usr.bin/make/archives/fmt_44bsd/Makefile
new file mode 100644
index 0000000..5a8b065
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/Makefile
@@ -0,0 +1,61 @@
+# $FreeBSD$
+# This test checks the code reading archive files. The archive file
+# is a BSD4.4 file with __.SYMTAB and #1/N long file names.
+
+#############################################################################
+
+# should be ok
+test1: libtest.a(short.o)
+ @:
+
+libtest.a(short.o): ood
+ @:
+
+#############################################################################
+
+# should be ok
+test2: libtest.a(exactly15char.o)
+ @:
+
+libtest.a(exactly15char.o): ood
+ @:
+
+#############################################################################
+
+# should be ok
+test3: libtest.a(exactly16chars.o)
+ @:
+
+libtest.a(exactly16chars.o): ood
+ @:
+
+#############################################################################
+
+# should be ok
+test4: libtest.a(verylongobjectname.o)
+ @:
+
+libtest.a(verylongobjectname.o): ood
+ @:
+
+#############################################################################
+
+# Truncated to 16 characters
+# should fail
+test5: libtest.a(verylongobjectna)
+ @:
+
+#############################################################################
+
+# Truncated to 15 characters
+# should fail
+test6: libtest.a(verylongobjectn)
+ @:
+
+#############################################################################
+
+# should fail
+test7: libtest.a(\#1/20)
+ @:
+
+ood:
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.1 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.2 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.3 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.3
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.3
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.4 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.4
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.4
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.5 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.5
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.5
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.6 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.6
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.6
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.7 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.7
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.7
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.1 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.2 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.3 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.3
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.4 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.4
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.5 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.5
new file mode 100644
index 0000000..7b91643
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.5
@@ -0,0 +1 @@
+make: don't know how to make verylongobjectna. Stop
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.6 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.6
new file mode 100644
index 0000000..fd15190
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.6
@@ -0,0 +1 @@
+make: don't know how to make verylongobjectn. Stop
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.7 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.7
new file mode 100644
index 0000000..cb572e1
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.7
@@ -0,0 +1 @@
+make: don't know how to make #1/20. Stop
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.1 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.1
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.2 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.3 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.3
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.4 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.4
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.5 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.5
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.6 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.6
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.6
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.7 b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.7
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.7
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/libtest.a b/tools/regression/usr.bin/make/archives/fmt_44bsd/libtest.a
new file mode 100644
index 0000000..891ce6e
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/libtest.a
Binary files differ
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd/test.t b/tools/regression/usr.bin/make/archives/fmt_44bsd/test.t
new file mode 100644
index 0000000..eba6aed
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd/test.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Archive parsing (BSD4.4 format)."
+
+# Setup
+TEST_COPY_FILES="libtest.a 644"
+
+# Run
+TEST_N=7
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/Makefile b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/Makefile
new file mode 100644
index 0000000..cd999da
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/Makefile
@@ -0,0 +1,64 @@
+# $FreeBSD$
+# This test checks the code reading archive files. The archive file
+# is a BSD4.4 file with __.SYMTAB and #1/N long file names.
+#
+# The modification of the archive consists in slashes appended to short names.
+#
+
+#############################################################################
+
+# must be ok
+test1: libtest.a(short.o)
+ @:
+
+libtest.a(short.o): ood
+ @:
+
+#############################################################################
+
+# must be ok
+test2: libtest.a(exactly15char.o)
+ @:
+
+libtest.a(exactly15char.o): ood
+ @:
+
+#############################################################################
+
+# must be ok
+test3: libtest.a(exactly16chars.o)
+ @:
+
+libtest.a(exactly16chars.o): ood
+ @:
+
+#############################################################################
+
+# must be ok
+test4: libtest.a(verylongobjectname.o)
+ @:
+
+libtest.a(verylongobjectname.o): ood
+ @:
+
+#############################################################################
+
+# Truncated to 16 characters
+# must fail
+test5: libtest.a(verylongobjectna)
+ @:
+
+#############################################################################
+
+# Truncated to 15 characters
+# must fail
+test6: libtest.a(verylongobjectn)
+ @:
+
+#############################################################################
+
+# must fail
+test7: libtest.a(\#1/20)
+ @:
+
+ood:
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.1 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.2 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.3 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.3
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.3
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.4 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.4
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.4
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.5 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.5
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.5
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.6 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.6
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.6
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.7 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.7
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.7
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.1 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.2 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.3 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.3
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.4 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.4
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.5 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.5
new file mode 100644
index 0000000..7b91643
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.5
@@ -0,0 +1 @@
+make: don't know how to make verylongobjectna. Stop
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.6 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.6
new file mode 100644
index 0000000..fd15190
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.6
@@ -0,0 +1 @@
+make: don't know how to make verylongobjectn. Stop
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.7 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.7
new file mode 100644
index 0000000..cb572e1
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.7
@@ -0,0 +1 @@
+make: don't know how to make #1/20. Stop
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.1 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.1
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.2 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.2
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.3 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.3
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.4 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.4
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.5 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.5
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.6 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.6
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.6
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.7 b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.7
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.7
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/libtest.a b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/libtest.a
new file mode 100644
index 0000000..57bc407
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/libtest.a
Binary files differ
diff --git a/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/test.t b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/test.t
new file mode 100644
index 0000000..aa65a3e
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/test.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Archive parsing (modified BSD4.4 format)."
+
+# Setup
+TEST_COPY_FILES="libtest.a 644"
+
+# Run
+TEST_N=7
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/Makefile b/tools/regression/usr.bin/make/archives/fmt_oldbsd/Makefile
new file mode 100644
index 0000000..b8f5116
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/Makefile
@@ -0,0 +1,62 @@
+# $FreeBSD$
+# This test checks the code reading archive files. The archive file
+# is an old BSD file with __.SYMTAB and no long file names. Filenames
+# are truncated to 16 characters.
+
+#############################################################################
+
+# must be ok
+test1: libtest.a(short.o)
+ @:
+
+libtest.a(short.o): ood
+ @:
+
+#############################################################################
+
+# must be ok
+test2: libtest.a(exactly15char.o)
+ @:
+
+libtest.a(exactly15char.o): ood
+ @:
+
+#############################################################################
+
+# must be ok
+test3: libtest.a(exactly16chars.o)
+ @:
+
+libtest.a(exactly16chars.o): ood
+ @:
+
+#############################################################################
+
+# must be ok
+test4: libtest.a(verylongobjectname.o)
+ @:
+
+libtest.a(verylongobjectname.o): ood
+ @:
+
+#############################################################################
+
+# Truncated to 16 characters
+# must be ok
+test5: libtest.a(verylongobjectna)
+ @:
+
+#############################################################################
+
+# Truncated to 15 characters
+# must fail
+test6: libtest.a(verylongobjectn)
+ @:
+
+#############################################################################
+
+# must fail
+test7: libtest.a(\#1/20)
+ @:
+
+ood:
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.1 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.2 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.3 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.3
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.3
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.4 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.4
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.4
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.5 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.5
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.5
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.6 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.6
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.6
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.7 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.7
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.7
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.1 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.2 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.3 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.3
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.4 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.4
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.5 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.5
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.6 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.6
new file mode 100644
index 0000000..fd15190
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.6
@@ -0,0 +1 @@
+make: don't know how to make verylongobjectn. Stop
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.7 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.7
new file mode 100644
index 0000000..cb572e1
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.7
@@ -0,0 +1 @@
+make: don't know how to make #1/20. Stop
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.1 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.1
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.2 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.2
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.3 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.3
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.4 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.4
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.5 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.5
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.6 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.6
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.6
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.7 b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.7
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.7
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/libtest.a b/tools/regression/usr.bin/make/archives/fmt_oldbsd/libtest.a
new file mode 100644
index 0000000..3434c53
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/libtest.a
Binary files differ
diff --git a/tools/regression/usr.bin/make/archives/fmt_oldbsd/test.t b/tools/regression/usr.bin/make/archives/fmt_oldbsd/test.t
new file mode 100644
index 0000000..03f7800
--- /dev/null
+++ b/tools/regression/usr.bin/make/archives/fmt_oldbsd/test.t
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Archive parsing (old BSD format)."
+
+# Setup
+TEST_COPY_FILES="libtest.a 644"
+
+# Run
+TEST_N=7
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/basic/t0/expected.status.1 b/tools/regression/usr.bin/make/basic/t0/expected.status.1
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t0/expected.status.1
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/basic/t0/expected.stderr.1 b/tools/regression/usr.bin/make/basic/t0/expected.stderr.1
new file mode 100644
index 0000000..90280c8
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t0/expected.stderr.1
@@ -0,0 +1 @@
+make: no target to make.
diff --git a/tools/regression/usr.bin/make/basic/t0/expected.stdout.1 b/tools/regression/usr.bin/make/basic/t0/expected.stdout.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t0/expected.stdout.1
diff --git a/tools/regression/usr.bin/make/basic/t0/test.t b/tools/regression/usr.bin/make/basic/t0/test.t
new file mode 100644
index 0000000..d71a39a
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t0/test.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="An empty Makefile file and no target given."
+
+# Setup
+TEST_TOUCH="Makefile ''"
+
+# Run
+TEST_N=1
+TEST_1=
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/basic/t1/Makefile b/tools/regression/usr.bin/make/basic/t1/Makefile
new file mode 100644
index 0000000..d120087
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t1/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+#
+# Just a target and nothing else. No target on command line.
+#
+all:
diff --git a/tools/regression/usr.bin/make/basic/t1/expected.status.1 b/tools/regression/usr.bin/make/basic/t1/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t1/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/basic/t1/expected.stderr.1 b/tools/regression/usr.bin/make/basic/t1/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t1/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/basic/t1/expected.stdout.1 b/tools/regression/usr.bin/make/basic/t1/expected.stdout.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t1/expected.stdout.1
diff --git a/tools/regression/usr.bin/make/basic/t1/test.t b/tools/regression/usr.bin/make/basic/t1/test.t
new file mode 100644
index 0000000..4131f5d
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t1/test.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="A Makefile file with only a 'all:' file dependency specification."
+
+# Run
+TEST_N=1
+TEST_1=
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/basic/t2/Makefile b/tools/regression/usr.bin/make/basic/t2/Makefile
new file mode 100644
index 0000000..ab8fe49
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t2/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+#
+# Just a target and a command. No command line targets.
+#
+all:
+ echo hello
diff --git a/tools/regression/usr.bin/make/basic/t2/expected.status.1 b/tools/regression/usr.bin/make/basic/t2/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t2/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/basic/t2/expected.stderr.1 b/tools/regression/usr.bin/make/basic/t2/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t2/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/basic/t2/expected.stdout.1 b/tools/regression/usr.bin/make/basic/t2/expected.stdout.1
new file mode 100644
index 0000000..e618540
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t2/expected.stdout.1
@@ -0,0 +1,2 @@
+echo hello
+hello
diff --git a/tools/regression/usr.bin/make/basic/t2/test.t b/tools/regression/usr.bin/make/basic/t2/test.t
new file mode 100644
index 0000000..f5866bb
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t2/test.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="A Makefile file with only a 'all:' file dependency specification, and shell command."
+
+# Run
+TEST_N=1
+TEST_1=
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/basic/t3/expected.status.1 b/tools/regression/usr.bin/make/basic/t3/expected.status.1
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t3/expected.status.1
@@ -0,0 +1 @@
+2
diff --git a/tools/regression/usr.bin/make/basic/t3/expected.stderr.1 b/tools/regression/usr.bin/make/basic/t3/expected.stderr.1
new file mode 100644
index 0000000..90280c8
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t3/expected.stderr.1
@@ -0,0 +1 @@
+make: no target to make.
diff --git a/tools/regression/usr.bin/make/basic/t3/expected.stdout.1 b/tools/regression/usr.bin/make/basic/t3/expected.stdout.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t3/expected.stdout.1
diff --git a/tools/regression/usr.bin/make/basic/t3/test.t b/tools/regression/usr.bin/make/basic/t3/test.t
new file mode 100644
index 0000000..782d27c
--- /dev/null
+++ b/tools/regression/usr.bin/make/basic/t3/test.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="No Makefile file, no command line target."
+
+# Run
+TEST_N=1
+TEST_1=
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/common.sh b/tools/regression/usr.bin/make/common.sh
new file mode 100644
index 0000000..34aacf8
--- /dev/null
+++ b/tools/regression/usr.bin/make/common.sh
@@ -0,0 +1,537 @@
+#!/bin/sh
+#
+# Common code used run regression tests for usr.bin/make.
+#
+# $FreeBSD$
+
+#
+# Output a message and exit with an error.
+#
+fatal()
+{
+ echo "fatal: $*" >/dev/stderr
+ exit 1
+}
+
+#
+# Check whether the working directory exists - it must.
+#
+ensure_workdir()
+{
+ if [ ! -d ${WORK_DIR} ] ; then
+ fatal "working directory ${WORK_DIR} does not exist."
+ fi
+}
+
+#
+# Make sure all tests have been run
+#
+ensure_run()
+{
+ if [ -z "${TEST_N}" ] ; then
+ TEST_N=1
+ fi
+
+ FAIL=
+ N=1
+ while [ ${N} -le ${TEST_N} ] ; do
+ if ! skip_test ${N} ; then
+ if [ ! -f ${OUTPUT_DIR}/status.${N} -o \
+ ! -f ${OUTPUT_DIR}/stdout.${N} -o \
+ ! -f ${OUTPUT_DIR}/stderr.${N} ] ; then
+ echo "Test ${SUBDIR}/${N} no yet run"
+ FAIL=yes
+ fi
+ fi
+ N=$((N + 1))
+ done
+
+ if [ ! -z "${FAIL}" ] ; then
+ exit 1
+ fi
+}
+
+#
+# Output usage messsage.
+#
+print_usage()
+{
+ echo "Usage: sh -v -m <path> -w <dir> $0 command(s)"
+ echo " setup - setup working directory"
+ echo " run - run the tests"
+ echo " show - show test results"
+ echo " compare - compare actual and expected results"
+ echo " diff - diff actual and expected results"
+ echo " reset - reset the test to its initial state"
+ echo " clean - delete working and output directory"
+ echo " test - setup + run + compare"
+ echo " prove - setup + run + compare + clean"
+ echo " desc - print short description"
+ echo " update - update the expected results with the current results"
+ echo " help - show this information"
+}
+
+#
+# Return 0 if we should skip the test. 1 otherwise
+#
+skip_test()
+{
+ eval skip=\${TEST_${1}_SKIP}
+ if [ -z "${skip}" ] ; then
+ return 1
+ else
+ return 0
+ fi
+}
+
+#
+# Common function for setup and reset.
+#
+common_setup()
+{
+ #
+ # If a Makefile exists in the source directory - copy it over
+ #
+ if [ -e Makefile -a ! -e ${WORK_DIR}/Makefile ] ; then
+ cp Makefile ${WORK_DIR}/Makefile
+ fi
+
+ #
+ # If the TEST_MAKE_DIRS variable is set, create those directories
+ #
+ set -- ${TEST_MAKE_DIRS}
+ while [ $# -ne 0 ] ; do
+ if [ ! -d ${WORK_DIR}/${1} ] ; then
+ mkdir -p -m ${2} ${WORK_DIR}/${1}
+ else
+ chmod ${2} ${WORK_DIR}/${1}
+ fi
+ shift ; shift
+ done
+
+ #
+ # If the TEST_COPY_FILES variable is set, copy those files over to
+ # the working directory. The value is assumed to be pairs of
+ # filenames and modes.
+ #
+ set -- ${TEST_COPY_FILES}
+ while [ $# -ne 0 ] ; do
+ if [ ! -e ${WORK_DIR}/${1} ] ; then
+ cp ${1} ${WORK_DIR}/${1}
+ fi
+ chmod ${2} ${WORK_DIR}/${1}
+ shift ; shift
+ done
+
+ #
+ # If the TEST_TOUCH variable is set, it is taken to be a list
+ # of pairs of filenames and arguments to touch(1). The arguments
+ # to touch must be surrounded by single quotes if there are more
+ # than one argument.
+ #
+ eval set -- ${TEST_TOUCH}
+ while [ $# -ne 0 ] ; do
+ eval touch ${2} ${WORK_DIR}/${1}
+ shift ; shift
+ done
+
+ #
+ # Now create links
+ #
+ eval set -- ${TEST_LINKS}
+ while [ $# -ne 0 ] ; do
+ eval ln ${WORK_DIR}/${1} ${WORK_DIR}/${2}
+ shift ; shift
+ done
+}
+
+#
+# Setup the test. This creates the working and output directories and
+# populates it with files. If there is a setup_test() function - call it.
+#
+eval_setup()
+{
+ #
+ # Check whether the working directory exists. If it does exit
+ # fatally so that we don't clobber a test the user is working on.
+ #
+ if [ -d ${WORK_DIR} ] ; then
+ fatal "working directory ${WORK_DIR} already exists."
+ fi
+
+ #
+ # Now create it and the output directory
+ #
+ mkdir -p ${WORK_DIR}
+ rm -rf ${OUTPUT_DIR}
+ mkdir -p ${OUTPUT_DIR}
+
+ #
+ # Common stuff
+ #
+ common_setup
+
+ #
+ # Now after all execute the user's setup function if it exists.
+ #
+ setup_test
+}
+
+#
+# Default setup_test function does nothing. This may be overriden by
+# the test.
+#
+setup_test()
+{
+}
+
+#
+# Reset the test. Here we need to rely on information from the test.
+# We executed the same steps as in the setup, by try not to clobber existing
+# files.
+# All files and directories that are listed on the TEST_CLEAN_FILES
+# variable are removed. Then the TEST_TOUCH list is executed and finally
+# the reset_test() function called if it exists.
+#
+eval_reset()
+{
+ ensure_workdir
+
+ #
+ # Clean the output directory
+ #
+ rm -rf ${OUTPUT_DIR}/*
+
+ #
+ # Common stuff
+ #
+ common_setup
+
+ #
+ # Remove files.
+ #
+ for f in ${TEST_CLEAN_FILES} ; do
+ rm -rf ${WORK_DIR}/${f}
+ done
+
+ #
+ # Execute test's function
+ #
+ reset_test
+}
+
+#
+# Default reset_test function does nothing. This may be overriden by
+# the test.
+#
+reset_test()
+{
+}
+
+#
+# Clean the test. This simply removes the working and output directories.
+#
+eval_clean()
+{
+ rm -rf ${WORK_DIR}
+ rm -rf ${OUTPUT_DIR}
+}
+
+#
+# Run the test.
+#
+eval_run()
+{
+ ensure_workdir
+
+ if [ -z "${TEST_N}" ] ; then
+ TEST_N=1
+ fi
+
+ N=1
+ while [ ${N} -le ${TEST_N} ] ; do
+ if ! skip_test ${N} ; then
+ ( cd ${WORK_DIR} ;
+ exec 1>${OUTPUT_DIR}/stdout.${N} 2>${OUTPUT_DIR}/stderr.${N}
+ run_test ${N}
+ echo $? >${OUTPUT_DIR}/status.${N}
+ )
+ fi
+ N=$((N + 1))
+ done
+}
+
+#
+# Default run_test() function. It can be replaced by the
+# user specified regression test. The argument to this function is
+# the test number.
+#
+run_test()
+{
+ eval args=\${TEST_${1}-test${1}}
+ ${MAKE_PROG} $args
+}
+
+#
+# Show test results.
+#
+eval_show()
+{
+ ensure_workdir
+
+ if [ -z "${TEST_N}" ] ; then
+ TEST_N=1
+ fi
+
+ N=1
+ while [ ${N} -le ${TEST_N} ] ; do
+ if ! skip_test ${N} ; then
+ echo "=== Test ${N} Status =================="
+ cat ${OUTPUT_DIR}/status.${N}
+ echo ".......... Stdout .................."
+ cat ${OUTPUT_DIR}/stdout.${N}
+ echo ".......... Stderr .................."
+ cat ${OUTPUT_DIR}/stderr.${N}
+ fi
+ N=$((N + 1))
+ done
+}
+
+#
+# Compare results with expected results
+#
+eval_compare()
+{
+ ensure_workdir
+ ensure_run
+
+ if [ -z "${TEST_N}" ] ; then
+ TEST_N=1
+ fi
+
+ echo "1..${TEST_N}"
+ N=1
+ while [ ${N} -le ${TEST_N} ] ; do
+ fail=
+ todo=
+ if ! skip_test ${N} ; then
+ do_compare stdout ${N} || fail="${fail}stdout "
+ do_compare stderr ${N} || fail="${fail}stderr "
+ do_compare status ${N} || fail="${fail}status "
+ eval todo=\${TEST_${N}_TODO}
+ fi
+ if [ ! -z "$fail" ]; then
+ echo -n "not "
+ fi
+ echo -n "ok ${N} ${SUBDIR}/${N}"
+ if [ ! -z "$fail" -o ! -z "$todo" ]; then
+ echo -n " # "
+ fi
+ if [ ! -z "$todo" ] ; then
+ echo -n "TODO $todo; "
+ fi
+ if [ ! -z "$fail" ] ; then
+ echo "reason: ${fail}"
+ fi
+ echo
+ N=$((N + 1))
+ done
+}
+
+#
+# Check if the test result is the same as the expected result.
+#
+# $1 Input file
+# $2 Test number
+#
+do_compare()
+{
+ local EXPECTED RESULT
+ EXPECTED="expected.$1.$2"
+ RESULT="${OUTPUT_DIR}/$1.$2"
+
+ if [ -f $EXPECTED ]; then
+ diff -q $EXPECTED $RESULT 1>/dev/null 2>/dev/null
+ return $?
+ else
+ return 1 # FAIL
+ fi
+}
+
+#
+# Diff current and expected results
+#
+eval_diff()
+{
+ ensure_workdir
+ ensure_run
+
+ if [ -z "${TEST_N}" ] ; then
+ TEST_N=1
+ fi
+
+ N=1
+ while [ ${N} -le ${TEST_N} ] ; do
+ if ! skip_test ${N} ; then
+ FAIL=
+ do_diff stdout ${N}
+ do_diff stderr ${N}
+ do_diff status ${N}
+ fi
+ N=$((N + 1))
+ done
+}
+
+#
+# Check if the test result is the same as the expected result.
+#
+# $1 Input file
+# $2 Test number
+#
+do_diff()
+{
+ local EXPECTED RESULT
+ EXPECTED="expected.$1.$2"
+ RESULT="${OUTPUT_DIR}/$1.$2"
+
+ echo diff -u $EXPECTED $RESULT
+ if [ -f $EXPECTED ]; then
+ diff -u $EXPECTED $RESULT
+ else
+ echo "${EXPECTED} does not exist"
+ fi
+}
+
+#
+# Update expected results
+#
+eval_update()
+{
+ ensure_workdir
+ ensure_run
+
+ if [ -z "${TEST_N}" ] ; then
+ TEST_N=1
+ fi
+
+ FAIL=
+ N=1
+ while [ ${N} -le ${TEST_N} ] ; do
+ if ! skip_test ${N} ; then
+ cp ${OUTPUT_DIR}/stdout.${N} expected.stdout.${N}
+ cp ${OUTPUT_DIR}/stderr.${N} expected.stderr.${N}
+ cp ${OUTPUT_DIR}/status.${N} expected.status.${N}
+ fi
+ N=$((N + 1))
+ done
+}
+
+#
+# Print description
+#
+eval_desc()
+{
+ echo "${SUBDIR}: ${DESC}"
+}
+
+#
+# Run the test
+#
+eval_test()
+{
+ eval_setup
+ eval_run
+ eval_compare
+}
+
+#
+# Run the test for prove(1)
+#
+eval_prove()
+{
+ eval_setup
+ eval_run
+ eval_compare
+ eval_clean
+}
+
+#
+# Main function. Execute the command(s) on the command line.
+#
+eval_cmd()
+{
+ if [ $# -eq 0 ] ; then
+ # if no arguments given default to 'prove'
+ set -- prove
+ fi
+
+ for i
+ do
+ case $i in
+
+ setup | run | compare | diff | clean | reset | show | \
+ test | prove | desc | update)
+ eval eval_$i
+ ;;
+ * | help)
+ print_usage
+ ;;
+ esac
+ done
+}
+
+##############################################################################
+#
+# Main code
+#
+
+#
+# Parse command line arguments.
+#
+args=`getopt m:w:v $*`
+if [ $? != 0 ]; then
+ echo 'Usage: ...'
+ exit 2
+fi
+set -- $args
+for i; do
+ case "$i" in
+ -m)
+ MAKE_PROG="$2"
+ shift
+ shift
+ ;;
+ -w)
+ WORK_BASE="$2"
+ shift
+ shift
+ ;;
+ -v)
+ VERBOSE=1
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ esac
+done
+
+#
+# Determine our sub-directory. Argh.
+#
+SRC_DIR=`pwd`
+SRC_BASE=`while [ ! -f common.sh ] ; do cd .. ; done ; pwd`
+SUBDIR=`echo ${SRC_DIR} | sed "s@${SRC_BASE}/@@"`
+
+#
+# Construct working directory
+#
+WORK_BASE=${WORK_BASE:-"/tmp/$USER.make.test"}
+WORK_DIR=${WORK_BASE}/${SUBDIR}
+OUTPUT_DIR=${WORK_DIR}.OUTPUT
+
+#
+# Make to use
+#
+MAKE_PROG=${MAKE_PROG:-/usr/bin/make}
diff --git a/tools/regression/usr.bin/make/shell/builtin/Makefile b/tools/regression/usr.bin/make/shell/builtin/Makefile
new file mode 100644
index 0000000..0376478
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/builtin/Makefile
@@ -0,0 +1,18 @@
+#
+# In compat mode (the default without -j) a line that contains no shell
+# meta characters and no shell builtins is not passed to the shell but
+# executed directly. In our example the ls line without meta characters
+# will really execute ls, while the line with meta characters will execute
+# our special shell.
+#
+# $FreeBSD$
+
+.SHELL: path="${.CURDIR}/sh"
+
+.PHONY: builtin no-builtin
+
+builtin:
+ @exec ls -d .
+
+no-builtin:
+ @ls -d .
diff --git a/tools/regression/usr.bin/make/shell/builtin/expected.status.1 b/tools/regression/usr.bin/make/shell/builtin/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/builtin/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/builtin/expected.status.2 b/tools/regression/usr.bin/make/shell/builtin/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/builtin/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/builtin/expected.stderr.1 b/tools/regression/usr.bin/make/shell/builtin/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/builtin/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/shell/builtin/expected.stderr.2 b/tools/regression/usr.bin/make/shell/builtin/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/builtin/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/shell/builtin/expected.stdout.1 b/tools/regression/usr.bin/make/shell/builtin/expected.stdout.1
new file mode 100644
index 0000000..9c558e3
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/builtin/expected.stdout.1
@@ -0,0 +1 @@
+.
diff --git a/tools/regression/usr.bin/make/shell/builtin/expected.stdout.2 b/tools/regression/usr.bin/make/shell/builtin/expected.stdout.2
new file mode 100644
index 0000000..e350eaf
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/builtin/expected.stdout.2
@@ -0,0 +1 @@
+-ec exec ls -d .
diff --git a/tools/regression/usr.bin/make/shell/builtin/sh b/tools/regression/usr.bin/make/shell/builtin/sh
new file mode 100644
index 0000000..3a507b87
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/builtin/sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+echo "$@"
+if ! test -t 0 ; then
+ cat
+fi
diff --git a/tools/regression/usr.bin/make/shell/builtin/test.t b/tools/regression/usr.bin/make/shell/builtin/test.t
new file mode 100644
index 0000000..1798afc
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/builtin/test.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Check that a command line with a builtin is passed to the shell."
+
+# Setup
+TEST_COPY_FILES="sh 755"
+
+# Run
+TEST_N=2
+TEST_1="-B no-builtin"
+TEST_2="-B builtin"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/shell/meta/Makefile b/tools/regression/usr.bin/make/shell/meta/Makefile
new file mode 100644
index 0000000..bcf19d0
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/meta/Makefile
@@ -0,0 +1,18 @@
+#
+# In compat mode (the default without -j) a line that contains no shell
+# meta characters and no shell builtins is not passed to the shell but
+# executed directly. In our example the ls line without meta characters
+# will really execute ls, while the line with meta characters will execute
+# our special shell.
+#
+# $FreeBSD$
+
+.SHELL: path="${.OBJDIR}/sh"
+
+.PHONY: meta no-meta
+
+meta:
+ @ls *
+
+no-meta:
+ @ls -d .
diff --git a/tools/regression/usr.bin/make/shell/meta/expected.status.1 b/tools/regression/usr.bin/make/shell/meta/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/meta/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/meta/expected.status.2 b/tools/regression/usr.bin/make/shell/meta/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/meta/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/meta/expected.stderr.1 b/tools/regression/usr.bin/make/shell/meta/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/meta/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/shell/meta/expected.stderr.2 b/tools/regression/usr.bin/make/shell/meta/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/meta/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/shell/meta/expected.stdout.1 b/tools/regression/usr.bin/make/shell/meta/expected.stdout.1
new file mode 100644
index 0000000..9c558e3
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/meta/expected.stdout.1
@@ -0,0 +1 @@
+.
diff --git a/tools/regression/usr.bin/make/shell/meta/expected.stdout.2 b/tools/regression/usr.bin/make/shell/meta/expected.stdout.2
new file mode 100644
index 0000000..6ac6f19
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/meta/expected.stdout.2
@@ -0,0 +1 @@
+-ec ls *
diff --git a/tools/regression/usr.bin/make/shell/meta/sh b/tools/regression/usr.bin/make/shell/meta/sh
new file mode 100644
index 0000000..3a507b87
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/meta/sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+echo "$@"
+if ! test -t 0 ; then
+ cat
+fi
diff --git a/tools/regression/usr.bin/make/shell/meta/test.t b/tools/regression/usr.bin/make/shell/meta/test.t
new file mode 100644
index 0000000..588b73c
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/meta/test.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Check that a command line with meta characters is passed to the shell."
+
+# Setup
+TEST_COPY_FILES="sh 755"
+
+# Run
+TEST_N=2
+TEST_1="-B no-meta"
+TEST_2="-B meta"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/shell/path/Makefile b/tools/regression/usr.bin/make/shell/path/Makefile
new file mode 100644
index 0000000..fe40b64
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path/Makefile
@@ -0,0 +1,31 @@
+#
+# Change the path for builtin shells. There are two methods to do this.
+# This is the first of them when the basename of the path is equal to
+# one of the builtin shells so that the .SHELL target automatically
+# also selectes the shell without specifying the name.
+#
+# Be sure to include a meta-character into the command line, so that
+# really our shell is executed.
+#
+# $FreeBSD$
+#
+
+.ifmake sh_test
+
+.SHELL: path=${.OBJDIR}/sh
+sh_test:
+ @: This is the shell.
+
+.elifmake csh_test
+
+.SHELL: path=${.OBJDIR}/csh
+csh_test:
+ @: This is the C-shell.
+
+.elifmake ksh_test
+
+.SHELL: path=${.OBJDIR}/ksh
+ksh_test:
+ @: This is the Korn-shell.
+
+.endif
diff --git a/tools/regression/usr.bin/make/shell/path/expected.status.1 b/tools/regression/usr.bin/make/shell/path/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/path/expected.status.2 b/tools/regression/usr.bin/make/shell/path/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/path/expected.stderr.1 b/tools/regression/usr.bin/make/shell/path/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/shell/path/expected.stderr.2 b/tools/regression/usr.bin/make/shell/path/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/shell/path/expected.stdout.1 b/tools/regression/usr.bin/make/shell/path/expected.stdout.1
new file mode 100644
index 0000000..d881364
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path/expected.stdout.1
@@ -0,0 +1 @@
+-ec : This is the shell.
diff --git a/tools/regression/usr.bin/make/shell/path/expected.stdout.2 b/tools/regression/usr.bin/make/shell/path/expected.stdout.2
new file mode 100644
index 0000000..de3fc89
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path/expected.stdout.2
@@ -0,0 +1 @@
+-ec : This is the C-shell.
diff --git a/tools/regression/usr.bin/make/shell/path/sh b/tools/regression/usr.bin/make/shell/path/sh
new file mode 100644
index 0000000..46169eb
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path/sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+echo $@
+if ! test -t 0 ; then
+ cat
+fi
diff --git a/tools/regression/usr.bin/make/shell/path/test.t b/tools/regression/usr.bin/make/shell/path/test.t
new file mode 100644
index 0000000..72ff252
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path/test.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="New path for builtin shells."
+
+# Setup
+TEST_COPY_FILES="sh 755"
+TEST_LINKS="sh csh sh ksh"
+
+# Run
+TEST_N=3
+TEST_1="sh_test"
+TEST_2="csh_test"
+TEST_3="ksh_test"
+TEST_3_SKIP="no ksh on FreeBSD"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/shell/path_select/Makefile b/tools/regression/usr.bin/make/shell/path_select/Makefile
new file mode 100644
index 0000000..05cfb27
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path_select/Makefile
@@ -0,0 +1,31 @@
+#
+# Change the path for builtin shells. There are two methods to do this.
+# This is the second of them when both a path and a name are specified.
+# This selects a builtin shell according to the name, but executes it
+# from the specified path.
+#
+# Be sure to include a meta-character into the command line, so that
+# really our shell is executed.
+#
+# $FreeBSD$
+#
+
+.ifmake sh_test
+
+.SHELL: name=sh path=${.CURDIR}/shell
+sh_test:
+ @: This is the shell.
+
+.elifmake csh_test
+
+.SHELL: name=csh path=${.CURDIR}/shell
+csh_test:
+ @: This is the C-shell.
+
+.elifmake ksh_test
+
+.SHELL: name=ksh path=${.CURDIR}/shell
+ksh_test:
+ @: This is the Korn-shell.
+
+.endif
diff --git a/tools/regression/usr.bin/make/shell/path_select/expected.status.1 b/tools/regression/usr.bin/make/shell/path_select/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path_select/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/path_select/expected.status.2 b/tools/regression/usr.bin/make/shell/path_select/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path_select/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/path_select/expected.stderr.1 b/tools/regression/usr.bin/make/shell/path_select/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path_select/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/shell/path_select/expected.stderr.2 b/tools/regression/usr.bin/make/shell/path_select/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path_select/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/shell/path_select/expected.stdout.1 b/tools/regression/usr.bin/make/shell/path_select/expected.stdout.1
new file mode 100644
index 0000000..d881364
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path_select/expected.stdout.1
@@ -0,0 +1 @@
+-ec : This is the shell.
diff --git a/tools/regression/usr.bin/make/shell/path_select/expected.stdout.2 b/tools/regression/usr.bin/make/shell/path_select/expected.stdout.2
new file mode 100644
index 0000000..de3fc89
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path_select/expected.stdout.2
@@ -0,0 +1 @@
+-ec : This is the C-shell.
diff --git a/tools/regression/usr.bin/make/shell/path_select/shell b/tools/regression/usr.bin/make/shell/path_select/shell
new file mode 100644
index 0000000..46169eb
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path_select/shell
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+echo $@
+if ! test -t 0 ; then
+ cat
+fi
diff --git a/tools/regression/usr.bin/make/shell/path_select/test.t b/tools/regression/usr.bin/make/shell/path_select/test.t
new file mode 100644
index 0000000..5bac631
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/path_select/test.t
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="New path for builtin shells (2)."
+
+# Setup
+TEST_COPY_FILES="shell 755"
+
+# Run
+TEST_N=3
+TEST_1="sh_test"
+TEST_2="csh_test"
+TEST_3="ksh_test"
+TEST_3_SKIP="no ksh on FreeBSD"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/shell/replace/Makefile b/tools/regression/usr.bin/make/shell/replace/Makefile
new file mode 100644
index 0000000..2160dbf
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/replace/Makefile
@@ -0,0 +1,21 @@
+#
+# Test that we can replace the shell and set all the shell parameters
+# (except meta and builtin which have their own test). This is done by
+# using a shell script for the shell that echoes all command line
+# arguments and its standard input. The shell name should not be one of
+# the builtin shells.
+#
+# XXX There seems to be a problem here in -j1 mode: for the line without
+# @- make should switch on echoing again, but it doesn't.
+#
+# $FreeBSD$
+
+.SHELL: name="shell" path="${.CURDIR}/shell" \
+ quiet="be quiet" echo="be verbose" filter="be verbose" \
+ echoFlag="x" errFlag="y" \
+ hasErrCtl=y check="check errors" ignore="ignore errors"
+
+.PHONY: test1
+test1:
+ -@funny $$
+ funnier $$
diff --git a/tools/regression/usr.bin/make/shell/replace/expected.status.1 b/tools/regression/usr.bin/make/shell/replace/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/replace/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/replace/expected.status.2 b/tools/regression/usr.bin/make/shell/replace/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/replace/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/replace/expected.stderr.1 b/tools/regression/usr.bin/make/shell/replace/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/replace/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/shell/replace/expected.stderr.2 b/tools/regression/usr.bin/make/shell/replace/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/replace/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/shell/replace/expected.stdout.1 b/tools/regression/usr.bin/make/shell/replace/expected.stdout.1
new file mode 100644
index 0000000..eff99ea
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/replace/expected.stdout.1
@@ -0,0 +1,3 @@
+-c funny $
+funnier $
+-ec funnier $
diff --git a/tools/regression/usr.bin/make/shell/replace/expected.stdout.2 b/tools/regression/usr.bin/make/shell/replace/expected.stdout.2
new file mode 100644
index 0000000..c79a09a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/replace/expected.stdout.2
@@ -0,0 +1,6 @@
+-yx
+be quiet
+ignore errors
+funny $
+check errors
+funnier $
diff --git a/tools/regression/usr.bin/make/shell/replace/shell b/tools/regression/usr.bin/make/shell/replace/shell
new file mode 100644
index 0000000..46169eb
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/replace/shell
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+echo $@
+if ! test -t 0 ; then
+ cat
+fi
diff --git a/tools/regression/usr.bin/make/shell/replace/test.t b/tools/regression/usr.bin/make/shell/replace/test.t
new file mode 100644
index 0000000..5c91cf9
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/replace/test.t
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Check that the shell can be replaced."
+
+# Setup
+TEST_COPY_FILES="shell 755"
+
+# Run
+TEST_N=2
+TEST_1=
+TEST_2=-j2
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/shell/select/Makefile b/tools/regression/usr.bin/make/shell/select/Makefile
new file mode 100644
index 0000000..e1ff023
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/select/Makefile
@@ -0,0 +1,28 @@
+#
+# We just select the builtin shells and check whether it is really
+# executed. This should print just the shell paths. Because we
+# normally don't have a ksh, we make this test conditional. This means
+# one has to recreate the test results once ksh is installed.
+#
+# $FreeBSD$
+#
+
+.ifmake sh_test
+
+.SHELL: name=sh
+sh_test: print_path
+
+.elifmake csh_test
+
+.SHELL: name=csh
+csh_test: print_path
+
+.elifmake ksh_test
+
+.SHELL: name=ksh
+ksh_test: print_path
+
+.endif
+
+print_path:
+ @ps -opid,command | awk '$$1=='$$$$' { print $$2; }'
diff --git a/tools/regression/usr.bin/make/shell/select/expected.status.1 b/tools/regression/usr.bin/make/shell/select/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/select/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/select/expected.status.2 b/tools/regression/usr.bin/make/shell/select/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/select/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/shell/select/expected.stderr.1 b/tools/regression/usr.bin/make/shell/select/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/select/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/shell/select/expected.stderr.2 b/tools/regression/usr.bin/make/shell/select/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/select/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/shell/select/expected.stdout.1 b/tools/regression/usr.bin/make/shell/select/expected.stdout.1
new file mode 100644
index 0000000..c2cdaa0
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/select/expected.stdout.1
@@ -0,0 +1 @@
+/bin/sh
diff --git a/tools/regression/usr.bin/make/shell/select/expected.stdout.2 b/tools/regression/usr.bin/make/shell/select/expected.stdout.2
new file mode 100644
index 0000000..5a831e8
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/select/expected.stdout.2
@@ -0,0 +1 @@
+/bin/csh
diff --git a/tools/regression/usr.bin/make/shell/select/test.t b/tools/regression/usr.bin/make/shell/select/test.t
new file mode 100644
index 0000000..7f73f9b
--- /dev/null
+++ b/tools/regression/usr.bin/make/shell/select/test.t
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Select the builtin sh shell."
+
+# Run
+TEST_N=3
+TEST_1="sh_test"
+TEST_2="csh_test"
+TEST_3="ksh_test"
+TEST_3_SKIP="no ksh on FreeBSD"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/suffixes/basic/Makefile b/tools/regression/usr.bin/make/suffixes/basic/Makefile
new file mode 100644
index 0000000..45d9130
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/basic/Makefile
@@ -0,0 +1,13 @@
+# $FreeBSD$
+#
+# Check that a simple suffix rule is correctly processed.
+
+test1: TEST1.b
+ diff -u TEST1.a TEST1.b
+
+.SUFFIXES:
+
+.SUFFIXES: .a .b
+
+.a.b:
+ cat ${.IMPSRC} >${.TARGET}
diff --git a/tools/regression/usr.bin/make/suffixes/basic/TEST1.a b/tools/regression/usr.bin/make/suffixes/basic/TEST1.a
new file mode 100644
index 0000000..da5569b
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/basic/TEST1.a
@@ -0,0 +1 @@
+I'm test file 1.
diff --git a/tools/regression/usr.bin/make/suffixes/basic/expected.status.1 b/tools/regression/usr.bin/make/suffixes/basic/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/basic/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/suffixes/basic/expected.stderr.1 b/tools/regression/usr.bin/make/suffixes/basic/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/basic/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/suffixes/basic/expected.stdout.1 b/tools/regression/usr.bin/make/suffixes/basic/expected.stdout.1
new file mode 100644
index 0000000..582927e
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/basic/expected.stdout.1
@@ -0,0 +1,2 @@
+cat TEST1.a >TEST1.b
+diff -u TEST1.a TEST1.b
diff --git a/tools/regression/usr.bin/make/suffixes/basic/test.t b/tools/regression/usr.bin/make/suffixes/basic/test.t
new file mode 100644
index 0000000..0b387c8
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/basic/test.t
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Basic suffix operation."
+
+# Setup
+TEST_COPY_FILES="TEST1.a 644"
+
+# Reset
+TEST_CLEAN="Test1.b"
+
+# Run
+TEST_N=1
+TEST_1="-r test1"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild1/Makefile b/tools/regression/usr.bin/make/suffixes/src_wild1/Makefile
new file mode 100644
index 0000000..d0258ad
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild1/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+test1: TEST1.b
+ cat TEST1.a TEST2.a | diff -u - TEST1.b
+
+TEST1.b: *.a
+ cat ${.ALLSRC} >${.TARGET}
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild1/TEST1.a b/tools/regression/usr.bin/make/suffixes/src_wild1/TEST1.a
new file mode 100644
index 0000000..da5569b
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild1/TEST1.a
@@ -0,0 +1 @@
+I'm test file 1.
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild1/TEST2.a b/tools/regression/usr.bin/make/suffixes/src_wild1/TEST2.a
new file mode 100644
index 0000000..34f8508
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild1/TEST2.a
@@ -0,0 +1 @@
+I'm test file 2.
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild1/expected.status.1 b/tools/regression/usr.bin/make/suffixes/src_wild1/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild1/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stderr.1 b/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stdout.1 b/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stdout.1
new file mode 100644
index 0000000..3cd2129
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stdout.1
@@ -0,0 +1,2 @@
+cat TEST1.a TEST2.a >TEST1.b
+cat TEST1.a TEST2.a | diff -u - TEST1.b
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild1/test.t b/tools/regression/usr.bin/make/suffixes/src_wild1/test.t
new file mode 100644
index 0000000..6b31118
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild1/test.t
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Source wildcard expansion."
+
+# Setup
+TEST_COPY_FILES="TEST1.a 644 TEST2.a 644"
+
+# Reset
+TEST_CLEAN="TEST1.b"
+
+# Run
+TEST_N=1
+TEST_1="-r test1"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild2/Makefile b/tools/regression/usr.bin/make/suffixes/src_wild2/Makefile
new file mode 100644
index 0000000..1dea7ea
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild2/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# Source expansion with the source in a macro
+#
+
+SRC=*.a
+
+test1: TEST1.b
+ cat TEST1.a TEST2.a | diff -u - TEST1.b
+
+TEST1.b: ${SRC}
+ cat ${.ALLSRC} >${.TARGET}
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild2/TEST1.a b/tools/regression/usr.bin/make/suffixes/src_wild2/TEST1.a
new file mode 100644
index 0000000..da5569b
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild2/TEST1.a
@@ -0,0 +1 @@
+I'm test file 1.
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild2/TEST2.a b/tools/regression/usr.bin/make/suffixes/src_wild2/TEST2.a
new file mode 100644
index 0000000..34f8508
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild2/TEST2.a
@@ -0,0 +1 @@
+I'm test file 2.
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild2/expected.status.1 b/tools/regression/usr.bin/make/suffixes/src_wild2/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild2/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stderr.1 b/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stdout.1 b/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stdout.1
new file mode 100644
index 0000000..3cd2129
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stdout.1
@@ -0,0 +1,2 @@
+cat TEST1.a TEST2.a >TEST1.b
+cat TEST1.a TEST2.a | diff -u - TEST1.b
diff --git a/tools/regression/usr.bin/make/suffixes/src_wild2/test.t b/tools/regression/usr.bin/make/suffixes/src_wild2/test.t
new file mode 100644
index 0000000..0d40e3d
--- /dev/null
+++ b/tools/regression/usr.bin/make/suffixes/src_wild2/test.t
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Source wildcard expansion (2)."
+
+# Setup
+TEST_COPY_FILES="TEST1.a 644 TEST2.a 644"
+
+# Reset
+TEST_CLEAN="TEST1.b"
+
+# Run
+TEST_N=1
+TEST_1="-r test1"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/syntax/enl/Makefile b/tools/regression/usr.bin/make/syntax/enl/Makefile
new file mode 100644
index 0000000..a7c6955
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/Makefile
@@ -0,0 +1,59 @@
+# $FreeBSD$
+#
+# Test handling of escaped newlines.
+#
+
+.ifmake test1
+
+# This should succeed
+\
+\
+\
+test1:
+ @echo ok
+
+.elifmake test2
+
+# This should print ok because the second assignment to foo is actually
+# a continued comment.
+FOO=ok
+#\
+\
+FOO=not ok
+test2:
+ @echo "${FOO}"
+
+.elifmake test3
+
+# Make sure an escaped newline inserts a space
+test3: a\
+b
+
+a:
+ @echo a
+
+b:
+ @echo b
+
+.elifmake test4
+
+# Make sure an escaped newline inserts exactly one space
+FOO=a\
+ b
+
+test4:
+ @echo "${FOO}"
+
+.elifmake test5
+
+# Make sure each escaped newline inserts exactly one space
+FOO=a\
+\
+\
+\
+b
+
+test5:
+ @echo "${FOO}"
+
+.endif
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.status.1 b/tools/regression/usr.bin/make/syntax/enl/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.status.2 b/tools/regression/usr.bin/make/syntax/enl/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.status.3 b/tools/regression/usr.bin/make/syntax/enl/expected.status.3
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.status.3
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.status.4 b/tools/regression/usr.bin/make/syntax/enl/expected.status.4
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.status.4
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.status.5 b/tools/regression/usr.bin/make/syntax/enl/expected.status.5
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.status.5
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stderr.1 b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stderr.2 b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stderr.3 b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.3
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stderr.4 b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.4
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stderr.5 b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stderr.5
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stdout.1 b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.1
new file mode 100644
index 0000000..9766475
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.1
@@ -0,0 +1 @@
+ok
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stdout.2 b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.2
new file mode 100644
index 0000000..9766475
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.2
@@ -0,0 +1 @@
+ok
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stdout.3 b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.3
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.3
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stdout.4 b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.4
new file mode 100644
index 0000000..b2901ea
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.4
@@ -0,0 +1 @@
+a b
diff --git a/tools/regression/usr.bin/make/syntax/enl/expected.stdout.5 b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.5
new file mode 100644
index 0000000..5120076
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/expected.stdout.5
@@ -0,0 +1 @@
+a b
diff --git a/tools/regression/usr.bin/make/syntax/enl/test.t b/tools/regression/usr.bin/make/syntax/enl/test.t
new file mode 100644
index 0000000..2e5d12c
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/enl/test.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Test escaped new-lines handling."
+
+# Run
+TEST_N=5
+TEST_2_TODO="bug in parser"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/syntax/semi/Makefile b/tools/regression/usr.bin/make/syntax/semi/Makefile
new file mode 100644
index 0000000..12f5225
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/semi/Makefile
@@ -0,0 +1,26 @@
+# $FreeBSD$
+#
+# Test handling of escaped newlines.
+#
+
+.ifmake test1
+
+FOO=
+BAR=bar
+FOO != echo ${FOO} ; echo ${BAR}
+
+test1:
+ echo ${FOO}
+
+.endif
+
+.ifmake test2
+
+FOO=foo
+BAR=bar
+FOO != echo ${FOO} ; echo ${BAR}
+
+test2:
+ echo ${FOO}
+
+.endif
diff --git a/tools/regression/usr.bin/make/syntax/semi/expected.status.1 b/tools/regression/usr.bin/make/syntax/semi/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/semi/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/syntax/semi/expected.status.2 b/tools/regression/usr.bin/make/syntax/semi/expected.status.2
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/semi/expected.status.2
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/syntax/semi/expected.stderr.1 b/tools/regression/usr.bin/make/syntax/semi/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/semi/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/syntax/semi/expected.stderr.2 b/tools/regression/usr.bin/make/syntax/semi/expected.stderr.2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/semi/expected.stderr.2
diff --git a/tools/regression/usr.bin/make/syntax/semi/expected.stdout.1 b/tools/regression/usr.bin/make/syntax/semi/expected.stdout.1
new file mode 100644
index 0000000..12b9617
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/semi/expected.stdout.1
@@ -0,0 +1,2 @@
+echo bar
+bar
diff --git a/tools/regression/usr.bin/make/syntax/semi/expected.stdout.2 b/tools/regression/usr.bin/make/syntax/semi/expected.stdout.2
new file mode 100644
index 0000000..be0fa55
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/semi/expected.stdout.2
@@ -0,0 +1,2 @@
+echo foo bar
+foo bar
diff --git a/tools/regression/usr.bin/make/syntax/semi/test.t b/tools/regression/usr.bin/make/syntax/semi/test.t
new file mode 100644
index 0000000..f52c9ab
--- /dev/null
+++ b/tools/regression/usr.bin/make/syntax/semi/test.t
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Test semicolon handling."
+
+# Run
+TEST_N=2
+TEST_1_TODO="parser bug"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/variables/modifier_M/Makefile b/tools/regression/usr.bin/make/variables/modifier_M/Makefile
new file mode 100644
index 0000000..f8f6d3f
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/modifier_M/Makefile
@@ -0,0 +1,18 @@
+# $FreeBSD$
+#
+# Test the M modifier.
+#
+FILES = \
+ main.c globals.h \
+ util.c util.h \
+ map.c map.h \
+ parser.y lexer.l \
+ cmdman.1 format.5
+test1:
+ @echo "all files: ${FILES}"
+ @echo "cfiles: ${FILES:M*.c}"
+ @echo "hfiles: ${FILES:M*.h}"
+ @echo "grammer and lexer: ${FILES:M*.[ly]}"
+ @echo "man page: ${FILES:M*.[1-9]}"
+ @echo "utility files: ${FILES:Mutil.?}"
+ @echo "m files: ${FILES:Mm*}"
diff --git a/tools/regression/usr.bin/make/variables/modifier_M/expected.status.1 b/tools/regression/usr.bin/make/variables/modifier_M/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/modifier_M/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/variables/modifier_M/expected.stderr.1 b/tools/regression/usr.bin/make/variables/modifier_M/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/modifier_M/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/variables/modifier_M/expected.stdout.1 b/tools/regression/usr.bin/make/variables/modifier_M/expected.stdout.1
new file mode 100644
index 0000000..e00d5a7
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/modifier_M/expected.stdout.1
@@ -0,0 +1,7 @@
+all files: main.c globals.h util.c util.h map.c map.h parser.y lexer.l cmdman.1 format.5
+cfiles: main.c util.c map.c
+hfiles: globals.h util.h map.h
+grammer and lexer: parser.y lexer.l
+man page: cmdman.1 format.5
+utility files: util.c util.h
+m files: main.c map.c map.h
diff --git a/tools/regression/usr.bin/make/variables/modifier_M/test.t b/tools/regression/usr.bin/make/variables/modifier_M/test.t
new file mode 100644
index 0000000..979778f
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/modifier_M/test.t
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Variable expansion with M modifier"
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/make/variables/t0/Makefile b/tools/regression/usr.bin/make/variables/t0/Makefile
new file mode 100644
index 0000000..1cc58ee
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/t0/Makefile
@@ -0,0 +1,23 @@
+# $FreeBSD$
+#
+# A unsorted set of macro expansions. This should be sorted out.
+#
+A = 0
+AV = 1
+test1:
+ @echo $A
+ @echo ${AV}
+ @echo ${A}
+ @# The following are soo broken why no syntax error?
+ @echo $(
+ @echo $)
+ @echo ${
+ @echo ${A
+ @echo ${A)
+ @echo ${A){
+ @echo ${AV
+ @echo ${AV)
+ @echo ${AV){
+ @echo ${AV{
+ @echo ${A{
+ @echo $}
diff --git a/tools/regression/usr.bin/make/variables/t0/expected.status.1 b/tools/regression/usr.bin/make/variables/t0/expected.status.1
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/t0/expected.status.1
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/make/variables/t0/expected.stderr.1 b/tools/regression/usr.bin/make/variables/t0/expected.stderr.1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/t0/expected.stderr.1
diff --git a/tools/regression/usr.bin/make/variables/t0/expected.stdout.1 b/tools/regression/usr.bin/make/variables/t0/expected.stdout.1
new file mode 100644
index 0000000..e2c70de
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/t0/expected.stdout.1
@@ -0,0 +1,15 @@
+0
+1
+0
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/regression/usr.bin/make/variables/t0/test.t b/tools/regression/usr.bin/make/variables/t0/test.t
new file mode 100644
index 0000000..7e4f427
--- /dev/null
+++ b/tools/regression/usr.bin/make/variables/t0/test.t
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+cd `dirname $0`
+. ../../common.sh
+
+# Description
+DESC="Variable expansion."
+
+eval_cmd $*
diff --git a/tools/regression/usr.bin/pkill/pgrep-F.t b/tools/regression/usr.bin/pkill/pgrep-F.t
new file mode 100644
index 0000000..fd76e64
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-F.t
@@ -0,0 +1,24 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..1"
+
+name="pgrep -F <pidfile>"
+pidfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+echo $chpid > $pidfile
+pid=`pgrep -f -F $pidfile $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok - $name"
+else
+ echo "not ok - $name"
+fi
+kill "$chpid"
+rm -f $pidfile
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-G.t b/tools/regression/usr.bin/pkill/pgrep-G.t
new file mode 100644
index 0000000..b07b608
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-G.t
@@ -0,0 +1,38 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pgrep -G <gid>"
+rgid=`id -gr`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -G $rgid $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+kill $chpid
+rm -f $sleep
+
+name="pgrep -G <group>"
+rgid=`id -grn`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -G $rgid $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 2 - $name"
+else
+ echo "not ok 2 - $name"
+fi
+kill $chpid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-LF.t b/tools/regression/usr.bin/pkill/pgrep-LF.t
new file mode 100644
index 0000000..d981175
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-LF.t
@@ -0,0 +1,41 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pgrep -LF <pidfile>"
+pidfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+daemon -p $pidfile $sleep 5
+sleep 0.3
+chpid=`cat $pidfile`
+pid=`pgrep -f -L -F $pidfile $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+kill "$chpid"
+
+# Be sure we cannot find process which pidfile is not locked.
+$sleep 5 &
+sleep 0.3
+chpid=$!
+echo $chpid > $pidfile
+pgrep -f -L -F $pidfile $sleep 2>/dev/null
+ec=$?
+case $ec in
+0)
+ echo "not ok 2 - $name"
+ ;;
+*)
+ echo "ok 2 - $name"
+ ;;
+esac
+
+kill "$chpid"
+rm -f $pidfile
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-P.t b/tools/regression/usr.bin/pkill/pgrep-P.t
new file mode 100644
index 0000000..d139edb
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-P.t
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..1"
+
+name="pgrep -P <ppid>"
+ppid=$$
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -P $ppid $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok - $name"
+else
+ echo "not ok - $name"
+fi
+kill $chpid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-S.t b/tools/regression/usr.bin/pkill/pgrep-S.t
new file mode 100644
index 0000000..5ce98e6
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-S.t
@@ -0,0 +1,20 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pgrep -S"
+pid=`pgrep -Sx g_event`
+if [ "$pid" = "2" ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+pid=`pgrep -x g_event`
+if [ "$pid" != "2" ]; then
+ echo "ok 2 - $name"
+else
+ echo "not ok 2 - $name"
+fi
diff --git a/tools/regression/usr.bin/pkill/pgrep-U.t b/tools/regression/usr.bin/pkill/pgrep-U.t
new file mode 100644
index 0000000..7cc865a
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-U.t
@@ -0,0 +1,38 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pgrep -U <uid>"
+ruid=`id -ur`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -U $ruid $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+kill $chpid
+rm -f $sleep
+
+name="pgrep -U <user>"
+ruid=`id -urn`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -U $ruid $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 2 - $name"
+else
+ echo "not ok 2 - $name"
+fi
+kill $chpid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-g.t b/tools/regression/usr.bin/pkill/pgrep-g.t
new file mode 100644
index 0000000..19bd774
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-g.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pgrep -g <pgrp>"
+pgrp=`ps -o tpgid -p $$ | tail -1`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -g $pgrp $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+kill $chpid
+rm -f $sleep
+
+name="pgrep -g 0"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -g 0 $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 2 - $name"
+else
+ echo "not ok 2 - $name"
+fi
+kill $chpid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-i.t b/tools/regression/usr.bin/pkill/pgrep-i.t
new file mode 100644
index 0000000..cbf36ff
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-i.t
@@ -0,0 +1,24 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..1"
+
+name="pgrep -i"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+usleep="${sleep}XXX"
+touch $usleep
+lsleep="${sleep}xxx"
+ln -sf /bin/sleep $usleep
+$usleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -i $lsleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok - $name"
+else
+ echo "not ok - $name"
+fi
+kill $chpid
+rm -f $sleep $usleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-j.t b/tools/regression/usr.bin/pkill/pgrep-j.t
new file mode 100644
index 0000000..861d575
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-j.t
@@ -0,0 +1,75 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..3"
+
+name="pgrep -j <jid>"
+if [ `id -u` -eq 0 ]; then
+ sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ ln -sf /bin/sleep $sleep
+ jail / $base-1 127.0.0.1 $sleep 5 &
+ chpid=$!
+ jail / $base-2 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ $sleep 5 &
+ chpid3=$!
+ sleep 0.5
+ jid=`jls | awk "/127\\.0\\.0\\.1.*${base}-1/ {print \$1}"`
+ pid=`pgrep -f -j $jid $sleep`
+ if [ "$pid" = "$chpid" ]; then
+ echo "ok 1 - $name"
+ else
+ echo "not ok 1 - $name"
+ fi
+ kill $chpid $chpid2 $chpid3
+ rm -f $sleep
+else
+ echo "ok 1 - $name # skip Test needs uid 0."
+fi
+
+name="pgrep -j any"
+if [ `id -u` -eq 0 ]; then
+ sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ ln -sf /bin/sleep $sleep
+ jail / $base-1 127.0.0.1 $sleep 5 &
+ chpid=$!
+ jail / $base-2 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ $sleep 5 &
+ chpid3=$!
+ sleep 0.5
+ pids=`pgrep -f -j any $sleep | sort`
+ refpids=`{ echo $chpid; echo $chpid2; } | sort`
+ if [ "$pids" = "$refpids" ]; then
+ echo "ok 2 - $name"
+ else
+ echo "not ok 2 - $name"
+ fi
+ kill $chpid $chpid2 $chpid3
+ rm -f $sleep
+else
+ echo "ok 2 - $name # skip Test needs uid 0."
+fi
+
+name="pgrep -j none"
+if [ `id -u` -eq 0 ]; then
+ sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ ln -sf /bin/sleep $sleep
+ $sleep 5 &
+ chpid=$!
+ jail / $base 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ sleep 0.5
+ pid=`pgrep -f -j none $sleep`
+ if [ "$pid" = "$chpid" ]; then
+ echo "ok 3 - $name"
+ else
+ echo "not ok 3 - $name"
+ fi
+ kill $chpid $chpid2
+ rm -f $sleep
+else
+ echo "ok 3 - $name # skip Test needs uid 0."
+fi
diff --git a/tools/regression/usr.bin/pkill/pgrep-l.t b/tools/regression/usr.bin/pkill/pgrep-l.t
new file mode 100644
index 0000000..3be3402
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-l.t
@@ -0,0 +1,20 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..1"
+
+name="pgrep -l"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pid=$!
+if [ "$pid $sleep 5" = "`pgrep -f -l $sleep`" ]; then
+ echo "ok - $name"
+else
+ echo "not ok - $name"
+fi
+kill $pid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-n.t b/tools/regression/usr.bin/pkill/pgrep-n.t
new file mode 100644
index 0000000..cde95fb
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-n.t
@@ -0,0 +1,24 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..1"
+
+name="pgrep -n"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+oldpid=$!
+$sleep 5 &
+sleep 0.3
+newpid=$!
+pid=`pgrep -f -n $sleep`
+if [ "$pid" = "$newpid" ]; then
+ echo "ok - $name"
+else
+ echo "not ok - $name"
+fi
+kill $oldpid
+kill $newpid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-o.t b/tools/regression/usr.bin/pkill/pgrep-o.t
new file mode 100644
index 0000000..2b1cf51
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-o.t
@@ -0,0 +1,24 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..1"
+
+name="pgrep -o"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+oldpid=$!
+$sleep 5 &
+sleep 0.3
+newpid=$!
+pid=`pgrep -f -o $sleep`
+if [ "$pid" = "$oldpid" ]; then
+ echo "ok - $name"
+else
+ echo "not ok - $name"
+fi
+kill $oldpid
+kill $newpid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-s.t b/tools/regression/usr.bin/pkill/pgrep-s.t
new file mode 100644
index 0000000..b9d3969
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-s.t
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pgrep -s <sid>"
+sid=`ps -o tsid -p $$ | tail -1`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -s $sid $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+kill $chpid
+rm -f $sleep
+
+name="pgrep -s 0"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -s 0 $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 2 - $name"
+else
+ echo "not ok 2 - $name"
+fi
+kill $chpid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-t.t b/tools/regression/usr.bin/pkill/pgrep-t.t
new file mode 100644
index 0000000..7e81ada
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-t.t
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pgrep -t <tty>"
+tty=`ps -o tty -p $$ | tail -1`
+if [ "$tty" = "??" ]; then
+ tty="-"
+ ttyshort="-"
+else
+ ttyshort=`echo $tty | cut -c 4-`
+fi
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+chpid=$!
+pid=`pgrep -f -t $tty $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+pid=`pgrep -f -t $ttyshort $sleep`
+if [ "$pid" = "$chpid" ]; then
+ echo "ok 2 - $name"
+else
+ echo "not ok 2 - $name"
+fi
+kill $chpid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-v.t b/tools/regression/usr.bin/pkill/pgrep-v.t
new file mode 100644
index 0000000..11a2be2
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-v.t
@@ -0,0 +1,25 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pgrep -v"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pid=$!
+if [ -z "`pgrep -f -v $sleep | egrep '^'"$pid"'$'`" ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+if [ ! -z "`pgrep -f -v -x x | egrep '^'"$pid"'$'`" ]; then
+ echo "ok 2 - $name"
+else
+ echo "not ok 2 - $name"
+fi
+kill $pid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pgrep-x.t b/tools/regression/usr.bin/pkill/pgrep-x.t
new file mode 100644
index 0000000..8906664
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pgrep-x.t
@@ -0,0 +1,36 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..4"
+
+name="pgrep -x"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pid=$!
+if [ ! -z "`pgrep -x sleep | egrep '^'"$pid"'$'`" ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+if [ -z "`pgrep -x slee | egrep '^'"$pid"'$'`" ]; then
+ echo "ok 2 - $name"
+else
+ echo "not ok 2 - $name"
+fi
+name="pgrep -x -f"
+if [ ! -z "`pgrep -x -f ''"$sleep"' 5' | egrep '^'"$pid"'$'`" ]; then
+ echo "ok 3 - $name"
+else
+ echo "not ok 3 - $name"
+fi
+if [ -z "`pgrep -x -f ''"$sleep"' ' | egrep '^'"$pid"'$'`" ]; then
+ echo "ok 4 - $name"
+else
+ echo "not ok 4 - $name"
+fi
+kill $pid
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pkill-F.t b/tools/regression/usr.bin/pkill/pkill-F.t
new file mode 100644
index 0000000..732d807
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-F.t
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..1"
+
+name="pkill -F <pidfile>"
+pidfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+echo $! > $pidfile
+pkill -f -F $pidfile $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok - $name"
+ ;;
+*)
+ echo "not ok - $name"
+ ;;
+esac
+
+rm -f $pidfile
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pkill-G.t b/tools/regression/usr.bin/pkill/pkill-G.t
new file mode 100644
index 0000000..0717cea
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-G.t
@@ -0,0 +1,42 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pkill -G <gid>"
+rgid=`id -gr`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -G $rgid $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 1 - $name"
+ ;;
+*)
+ echo "not ok 1 - $name"
+ ;;
+esac
+rm -f $sleep
+
+name="pkill -G <group>"
+rgid=`id -grn`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -G $rgid $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 2 - $name"
+ ;;
+*)
+ echo "not ok 2 - $name"
+ ;;
+esac
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pkill-LF.t b/tools/regression/usr.bin/pkill/pkill-LF.t
new file mode 100644
index 0000000..adb6ba9
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-LF.t
@@ -0,0 +1,43 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pkill -LF <pidfile>"
+pidfile=`mktemp /tmp/$base.XXXXXX` || exit 1
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+daemon -p $pidfile $sleep 5
+sleep 0.3
+pkill -f -L -F $pidfile $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 1 - $name"
+ ;;
+*)
+ echo "not ok 1 - $name"
+ ;;
+esac
+
+# Be sure we cannot kill process which pidfile is not locked.
+$sleep 5 &
+sleep 0.3
+chpid=$!
+echo $chpid > $pidfile
+pkill -f -L -F $pidfile $sleep 2>/dev/null
+ec=$?
+case $ec in
+0)
+ echo "not ok 2 - $name"
+ ;;
+*)
+ echo "ok 2 - $name"
+ ;;
+esac
+
+kill "$chpid"
+rm -f $pidfile
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pkill-P.t b/tools/regression/usr.bin/pkill/pkill-P.t
new file mode 100644
index 0000000..4b8ddb5
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-P.t
@@ -0,0 +1,25 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..1"
+
+name="pkill -P <ppid>"
+ppid=$$
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -P $ppid $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok - $name"
+ ;;
+*)
+ echo "not ok - $name"
+ ;;
+esac
+
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pkill-U.t b/tools/regression/usr.bin/pkill/pkill-U.t
new file mode 100644
index 0000000..16313f8
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-U.t
@@ -0,0 +1,42 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pkill -U <uid>"
+ruid=`id -ur`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -U $ruid $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 1 - $name"
+ ;;
+*)
+ echo "not ok 1 - $name"
+ ;;
+esac
+rm -f $sleep
+
+name="pkill -U <user>"
+ruid=`id -urn`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -U $ruid $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 2 - $name"
+ ;;
+*)
+ echo "not ok 2 - $name"
+ ;;
+esac
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pkill-g.t b/tools/regression/usr.bin/pkill/pkill-g.t
new file mode 100644
index 0000000..d00adac
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-g.t
@@ -0,0 +1,41 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pkill -g <pgrp>"
+pgrp=`ps -o tpgid -p $$ | tail -1`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -g $pgrp $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 1 - $name"
+ ;;
+*)
+ echo "not ok 1 - $name"
+ ;;
+esac
+rm -f $sleep
+
+name="pkill -g 0"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -g 0 $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 2 - $name"
+ ;;
+*)
+ echo "not ok 2 - $name"
+ ;;
+esac
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pkill-i.t b/tools/regression/usr.bin/pkill/pkill-i.t
new file mode 100644
index 0000000..6574cbd
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-i.t
@@ -0,0 +1,26 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..1"
+
+name="pkill -i"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+usleep="${sleep}XXX"
+touch $usleep
+lsleep="${sleep}xxx"
+ln -sf /bin/sleep $usleep
+$usleep 5 &
+sleep 0.3
+pkill -f -i $lsleep
+ec=$?
+case $ec in
+0)
+ echo "ok - $name"
+ ;;
+*)
+ echo "not ok - $name"
+ ;;
+esac
+rm -f $sleep $usleep
diff --git a/tools/regression/usr.bin/pkill/pkill-j.t b/tools/regression/usr.bin/pkill/pkill-j.t
new file mode 100644
index 0000000..5cb03115
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-j.t
@@ -0,0 +1,71 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..3"
+
+name="pkill -j <jid>"
+if [ `id -u` -eq 0 ]; then
+ sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ ln -sf /bin/sleep $sleep
+ jail / $base-1 127.0.0.1 $sleep 5 &
+ chpid=$!
+ jail / $base-2 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ $sleep 5 &
+ chpid3=$!
+ sleep 0.5
+ jid=`jls | awk "/127\\.0\\.0\\.1.*${base}-1/ {print \$1}"`
+ if pkill -f -j $jid $sleep && sleep 0.5 &&
+ ! kill $chpid && kill $chpid2 $chpid3; then
+ echo "ok 1 - $name"
+ else
+ echo "not ok 1 - $name"
+ fi 2>/dev/null
+ rm -f $sleep
+else
+ echo "ok 1 - $name # skip Test needs uid 0."
+fi
+
+name="pkill -j any"
+if [ `id -u` -eq 0 ]; then
+ sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ ln -sf /bin/sleep $sleep
+ jail / $base-1 127.0.0.1 $sleep 5 &
+ chpid=$!
+ jail / $base-2 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ $sleep 5 &
+ chpid3=$!
+ sleep 0.5
+ if pkill -f -j any $sleep && sleep 0.5 &&
+ ! kill $chpid && ! kill $chpid2 && kill $chpid3; then
+ echo "ok 2 - $name"
+ else
+ echo "not ok 2 - $name"
+ fi 2>/dev/null
+ rm -f $sleep
+else
+ echo "ok 2 - $name # skip Test needs uid 0."
+fi
+
+name="pkill -j none"
+if [ `id -u` -eq 0 ]; then
+ sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ ln -sf /bin/sleep $sleep
+ $sleep 5 &
+ chpid=$!
+ jail / $base 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ sleep 0.5
+ if pkill -f -j none $sleep && sleep 0.5 &&
+ ! kill $chpid && kill $chpid2; then
+ echo "ok 3 - $name"
+ else
+ echo "not ok 3 - $name"
+ fi 2>/dev/null
+ rm -f $sleep
+else
+ echo "ok 3 - $name # skip Test needs uid 0."
+fi
diff --git a/tools/regression/usr.bin/pkill/pkill-s.t b/tools/regression/usr.bin/pkill/pkill-s.t
new file mode 100644
index 0000000..5fc4dc6
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-s.t
@@ -0,0 +1,41 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pkill -s <sid>"
+sid=`ps -o tsid -p $$ | tail -1`
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -s $sid $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 1 - $name"
+ ;;
+*)
+ echo "not ok 1 - $name"
+ ;;
+esac
+rm -f $sleep
+
+name="pkill -s 0"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -s 0 $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 2 - $name"
+ ;;
+*)
+ echo "not ok 2 - $name"
+ ;;
+esac
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pkill-t.t b/tools/regression/usr.bin/pkill/pkill-t.t
new file mode 100644
index 0000000..cbef527
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-t.t
@@ -0,0 +1,42 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..2"
+
+name="pkill -t <tty>"
+tty=`ps -o tty -p $$ | tail -1`
+if [ "$tty" = "??" ]; then
+ tty="-"
+ ttyshort="-"
+else
+ ttyshort=`echo $tty | cut -c 4-`
+fi
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -f -t $tty $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 1 - $name"
+ ;;
+*)
+ echo "not ok 1 - $name"
+ ;;
+esac
+$sleep 5 &
+sleep 0.3
+pkill -f -t $ttyshort $sleep
+ec=$?
+case $ec in
+0)
+ echo "ok 2 - $name"
+ ;;
+*)
+ echo "not ok 2 - $name"
+ ;;
+esac
+rm -f $sleep
diff --git a/tools/regression/usr.bin/pkill/pkill-x.t b/tools/regression/usr.bin/pkill/pkill-x.t
new file mode 100644
index 0000000..61d5d5b
--- /dev/null
+++ b/tools/regression/usr.bin/pkill/pkill-x.t
@@ -0,0 +1,44 @@
+#!/bin/sh
+# $FreeBSD$
+
+base=`basename $0`
+
+echo "1..4"
+
+name="pkill -x"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -x slee -P $$
+if [ $? -ne 0 ]; then
+ echo "ok 1 - $name"
+else
+ echo "not ok 1 - $name"
+fi
+pkill -x sleep -P $$
+if [ $? -eq 0 ]; then
+ echo "ok 2 - $name"
+else
+ echo "not ok 2 - $name"
+fi
+rm -f $sleep
+
+name="pkill -x -f"
+sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ln -sf /bin/sleep $sleep
+$sleep 5 &
+sleep 0.3
+pkill -x -f "$sleep " -P $$
+if [ $? -ne 0 ]; then
+ echo "ok 3 - $name"
+else
+ echo "not ok 3 - $name"
+fi
+pkill -x -f "$sleep 5" -P $$
+if [ $? -eq 0 ]; then
+ echo "ok 4 - $name"
+else
+ echo "not ok 4 - $name"
+fi
+rm -f $sleep
diff --git a/tools/regression/usr.bin/printf/Makefile b/tools/regression/usr.bin/printf/Makefile
new file mode 100644
index 0000000..b937d41
--- /dev/null
+++ b/tools/regression/usr.bin/printf/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}
diff --git a/tools/regression/usr.bin/printf/regress.b.out b/tools/regression/usr.bin/printf/regress.b.out
new file mode 100644
index 0000000..0373d93
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.b.out
@@ -0,0 +1 @@
+abcdef
diff --git a/tools/regression/usr.bin/printf/regress.d.out b/tools/regression/usr.bin/printf/regress.d.out
new file mode 100644
index 0000000..da83c08
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.d.out
@@ -0,0 +1 @@
+123, 123,00123,00123,00123
diff --git a/tools/regression/usr.bin/printf/regress.f.out b/tools/regression/usr.bin/printf/regress.f.out
new file mode 100644
index 0000000..127cb8a
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.f.out
@@ -0,0 +1 @@
+42.250000,-42.250 ,inf,nan
diff --git a/tools/regression/usr.bin/printf/regress.m1.out b/tools/regression/usr.bin/printf/regress.m1.out
new file mode 100644
index 0000000..a9e063e
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.m1.out
Binary files differ
diff --git a/tools/regression/usr.bin/printf/regress.m2.out b/tools/regression/usr.bin/printf/regress.m2.out
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.m2.out
@@ -0,0 +1 @@
+abc
diff --git a/tools/regression/usr.bin/printf/regress.m3.out b/tools/regression/usr.bin/printf/regress.m3.out
new file mode 100644
index 0000000..bbe4e70
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.m3.out
@@ -0,0 +1,4 @@
+%abc
+%def
+%ghi
+%jkl
diff --git a/tools/regression/usr.bin/printf/regress.m4.out b/tools/regression/usr.bin/printf/regress.m4.out
new file mode 100644
index 0000000..5e0b5d4
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.m4.out
@@ -0,0 +1 @@
+0,0.000000,,
diff --git a/tools/regression/usr.bin/printf/regress.s.out b/tools/regression/usr.bin/printf/regress.s.out
new file mode 100644
index 0000000..3d572b9
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.s.out
@@ -0,0 +1 @@
+abc,abc
diff --git a/tools/regression/usr.bin/printf/regress.sh b/tools/regression/usr.bin/printf/regress.sh
new file mode 100644
index 0000000..86c600f
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.sh
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+REGRESSION_START($1)
+
+echo '1..8'
+
+REGRESSION_TEST(`b', `printf "abc%b%b" "def\n" "\cghi"')
+REGRESSION_TEST(`d', `printf "%d,%5d,%.5d,%0*d,%.*d\n" 123 123 123 5 123 5 123')
+REGRESSION_TEST(`f', `printf "%f,%-8.3f,%f,%f\n" +42.25 -42.25 inf nan')
+REGRESSION_TEST(`m1', `printf "%c%%%d\0\045\n" abc \"abc')
+REGRESSION_TEST(`m2', `printf "abc\n\cdef"')
+REGRESSION_TEST(`m3', `printf "%%%s\n" abc def ghi jkl')
+REGRESSION_TEST(`m4', `printf "%d,%f,%c,%s\n"')
+REGRESSION_TEST(`s', `printf "%.3s,%-5s\n" abcd abc')
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/printf/regress.t b/tools/regression/usr.bin/printf/regress.t
new file mode 100644
index 0000000..a82aacd
--- /dev/null
+++ b/tools/regression/usr.bin/printf/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+m4 ../regress.m4 regress.sh | sh
diff --git a/tools/regression/usr.bin/regress.m4 b/tools/regression/usr.bin/regress.m4
new file mode 100644
index 0000000..35e2ab9
--- /dev/null
+++ b/tools/regression/usr.bin/regress.m4
@@ -0,0 +1,59 @@
+# $FreeBSD$
+
+dnl A library of routines for doing regression tests for userland utilities.
+
+dnl Start up. We initialise the exit status to 0 (no failure) and change
+dnl into the directory specified by our first argument, which is the
+dnl directory to run the tests inside.
+define(`REGRESSION_START',
+TESTDIR=$1
+if [ -z "$TESTDIR" ]; then
+ TESTDIR=.
+fi
+cd $TESTDIR
+
+STATUS=0)
+
+dnl Check $? to see if we passed or failed. The first parameter is the test
+dnl which passed or failed. It may be nil.
+define(`REGRESSION_PASSFAIL',
+if [ $? -eq 0 ]; then
+ echo "ok - $1 # Test detected no regression. (in $TESTDIR)"
+else
+ STATUS=$?
+ echo "not ok - $1 # Test failed: regression detected. See above. (in $TESTDIR)"
+fi)
+
+dnl An actual test. The first parameter is the test name. The second is the
+dnl command/commands to execute for the actual test. Their exit status is
+dnl checked. It is assumed that the test will output to stdout, and that the
+dnl output to be used to check for regression will be in regress.TESTNAME.out.
+define(`REGRESSION_TEST',
+$2 | diff -u regress.$1.out -
+REGRESSION_PASSFAIL($1))
+
+dnl A freeform regression test. Only exit status is checked.
+define(`REGRESSION_TEST_FREEFORM',
+$2
+REGRESSION_PASSFAIL($1))
+
+dnl A regression test like REGRESSION_TEST, except only regress.out is used
+dnl for checking output differences. The first argument is the command, the
+dnl second argument (which may be empty) is the test name.
+define(`REGRESSION_TEST_ONE',
+$1 | diff -u regress.out -
+REGRESSION_PASSFAIL($2))
+
+dnl A fatal error. This will exit with the given status (first argument) and
+dnl print the message (second argument) prefixed with the string "FATAL :" to
+dnl the error stream.
+define(`REGRESSION_FATAL',
+echo "Bail out! $2 (in $TESTDIR)" > /dev/stderr
+exit $1)
+
+dnl Cleanup. Exit with the status code of the last failure. Should probably
+dnl be the number of failed tests, but hey presto, this is what it does. This
+dnl could also clean up potential droppings, if some forms of regression tests
+dnl end up using mktemp(1) or such.
+define(`REGRESSION_END',
+exit $STATUS)
diff --git a/tools/regression/usr.bin/sed/Makefile b/tools/regression/usr.bin/sed/Makefile
new file mode 100644
index 0000000..050b4ee
--- /dev/null
+++ b/tools/regression/usr.bin/sed/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+all:
+ @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}
+ @sh multitest.t
diff --git a/tools/regression/usr.bin/sed/hanoi.sed b/tools/regression/usr.bin/sed/hanoi.sed
new file mode 100644
index 0000000..6a45dea
--- /dev/null
+++ b/tools/regression/usr.bin/sed/hanoi.sed
@@ -0,0 +1,103 @@
+# Towers of Hanoi in sed.
+#
+# @(#)hanoi.sed 8.1 (Berkeley) 6/6/93
+# $FreeBSD$
+#
+#
+# Ex:
+# Run "sed -f hanoi.sed", and enter:
+#
+# :abcd: : :<CR>
+#
+# note -- TWO carriage returns were once required, this will output the
+# sequence of states involved in moving 4 rings, the largest called "a" and
+# the smallest called "d", from the first to the second of three towers, so
+# that the rings on any tower at any time are in descending order of size.
+# You can start with a different arrangement and a different number of rings,
+# say :ce:b:ax: and it will give the shortest procedure for moving them all
+# to the middle tower. The rules are: the names of the rings must all be
+# lower-case letters, they must be input within 3 fields (representing the
+# towers) and delimited by 4 colons, such that the letters within each field
+# are in alphabetical order (i.e. rings are in descending order of size).
+#
+# For the benefit of anyone who wants to figure out the script, an "internal"
+# line of the form
+# b:0abx:1a2b3 :2 :3x2
+# has the following meaning: the material after the three markers :1, :2,
+# and :3 represents the three towers; in this case the current set-up is
+# ":ab : :x :". The numbers after a, b and x in these fields indicate
+# that the next time it gets a chance, it will move a to tower 2, move b
+# to tower 3, and move x to tower 2. The string after :0 just keeps track
+# of the alphabetical order of the names of the rings. The b at the
+# beginning means that it is now dealing with ring b (either about to move
+# it, or re-evaluating where it should next be moved to).
+#
+# Although this version is "limited" to 26 rings because of the size of the
+# alphabet, one could write a script using the same idea in which the rings
+# were represented by arbitrary [strings][within][brackets], and in place of
+# the built-in line of the script giving the order of the letters of the
+# alphabet, it would accept from the user a line giving the ordering to be
+# assumed, e.g. [ucbvax][decvax][hplabs][foo][bar].
+#
+# George Bergman
+# Math, UC Berkeley 94720 USA
+
+# cleaning, diagnostics
+s/ *//g
+/^$/d
+/[^a-z:]/{a\
+Illegal characters: use only a-z and ":". Try again.
+d
+}
+/^:[a-z]*:[a-z]*:[a-z]*:$/!{a\
+Incorrect format: use\
+\ : string1 : string2 : string3 :<CR>\
+Try again.
+d
+}
+/\([a-z]\).*\1/{a\
+Repeated letters not allowed. Try again.
+d
+}
+# initial formatting
+h
+s/[a-z]/ /g
+G
+s/^:\( *\):\( *\):\( *\):\n:\([a-z]*\):\([a-z]*\):\([a-z]*\):$/:1\4\2\3:2\5\1\3:3\6\1\2:0/
+s/[a-z]/&2/g
+s/^/abcdefghijklmnopqrstuvwxyz/
+:a
+s/^\(.\).*\1.*/&\1/
+s/.//
+/^[^:]/ba
+s/\([^0]*\)\(:0.*\)/\2\1:/
+s/^[^0]*0\(.\)/\1&/
+:b
+# outputting current state without markers
+h
+s/.*:1/:/
+s/[123]//gp
+g
+:c
+# establishing destinations
+/^\(.\).*\1:1/td
+/^\(.\).*:1[^:]*\11/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\31/
+/^\(.\).*:1[^:]*\12/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\33/
+/^\(.\).*:1[^:]*\13/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\32/
+/^\(.\).*:2[^:]*\11/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\33/
+/^\(.\).*:2[^:]*\12/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\32/
+/^\(.\).*:2[^:]*\13/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\31/
+/^\(.\).*:3[^:]*\11/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\32/
+/^\(.\).*:3[^:]*\12/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\31/
+/^\(.\).*:3[^:]*\13/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\33/
+bc
+# iterate back to find smallest out-of-place ring
+:d
+s/^\(.\)\(:0[^:]*\([^:]\)\1.*:\([123]\)[^:]*\1\)\4/\3\2\4/
+td
+# move said ring (right, resp. left)
+s/^\(.\)\(.*\)\1\([23]\)\(.*:\3[^ ]*\) /\1\2 \4\1\3/
+s/^\(.\)\(.*:\([12]\)[^ ]*\) \(.*\)\1\3/\1\2\1\3\4 /
+tb
+s/.*/Done! Try another, or end with ^D./p
+d
diff --git a/tools/regression/usr.bin/sed/math.sed b/tools/regression/usr.bin/sed/math.sed
new file mode 100644
index 0000000..cdd18d6
--- /dev/null
+++ b/tools/regression/usr.bin/sed/math.sed
@@ -0,0 +1,439 @@
+# This is ksb's infamous sed calculator. (ksb@sa.fedex.com)
+#
+# $FreeBSD$
+#
+# $Id: math.sed,v 2.5 1998/08/02 13:23:34 ksb Exp ksb $
+# expr ::= (expr) | expr! |
+# expr ^ expr |
+# -expr | expr * expr | expr / expr | expr % expr |
+# expr + expr | expr - expr |
+# [0-9][0-9]* ;
+# Bugs: some sign combinations don't work, and I got sick of added cases
+# for unary +. Don't depend on signed math working all the time. -- ksb
+#
+# $Compile: echo "4+7*3+2^7/3" | sed -f %f
+
+# make sure the expression is well formed
+s/[ ]//g
+/[*\/^%+-]$/{
+ a\
+ poorly formed expression, dyadic operator on the end
+ q
+}
+/^[*\/^%]/{
+ a\
+ poorly formed expression, leading dyadic operator
+ q
+}
+
+# fill hold space with done token
+x
+s/^.*/done/
+x
+
+# main loop, process operators ((), !, *, /, %, +, and -)
+: loop
+# uncomment the print below to follow the "logic" -- ksb
+#p
+/^[+]/{
+ s///
+ b loop
+}
+/^--/{
+ s///
+ b loop
+}
+# eval parenthesised sub expressions first
+/^\(.*\)(\([^)]*\))\(.*\)$/{
+ H
+ s//\2/
+ x
+ s/^\(.*\)\n\(.*\)(\([^()]*\))\(.*\)$/()\2@\4@\1/
+ x
+ b loop
+}
+# reduce a^b^c -> a^(b^c)
+/\([0-9][0-9]*^\)\([0-9][0-9]*^[0-9][0-9^]*\)/{
+ s//\1(\2)/
+ b loop
+}
+# pull any burried exponents
+/^\(.*[^0-9]\)\([0-9][0-9]*^[0-9][0-9]*\)$/{
+ s//\1(\2)/
+ b loop
+}
+/^\(.*[^0-9]\)\([0-9][0-9]*^[0-9][0-9]*\)\([^0-9].*\)$/{
+ s//\1(\2)\3/
+ b loop
+}
+/^\([0-9][0-9]*^[0-9][0-9]*\)\([^0-9].*\)$/{
+ s//(\1)\2/
+ b loop
+}
+/^\([-]*[0-9]*\)^0*$/{
+ s//1/
+ b loop
+}
+/^\([-]*[0-9]*\)^0*1$/{
+ s//\1/
+ b loop
+}
+/^\([-]*[0-9]*\)^-[0-9]*$/{
+ s//0/
+ b loop
+}
+/^\([-]*\)\([0-9]*\)^\([0-9][0-9]*[13579]\)$/{
+ s//\1\2*((\2*\2)^(\3\/2))/
+ b loop
+}
+/^[-]*\([0-9]*\)^\([0-9][0-9]*[02468]\)$/{
+ s//(\1*\1)^(\2\/2)/
+ b loop
+}
+# single digit powers (2 3,9 4,6,8 5,7
+/^[-]*\([0-9]*\)^0*2$/{
+ s//(\1*\1)/
+ b loop
+}
+/^\([-]*\)\([0-9]*\)^0*\([39]\)$/{
+ s//\1(\2*(\2*\2))^(\3\/3)/
+ b loop
+}
+/^[-]*\([0-9]*\)^0*\([468]\)$/{
+ s//(\1*\1)^(\2\/2)/
+ b loop
+}
+# 5 7
+/^\([-]*[0-9]*\)^\([0-9]*\)$/{
+ s//\1*(\1^(\2-1))/
+ b loop
+}
+# reduce all number factorials
+/^0*[01]!/{
+ s//1/
+ b loop
+}
+/\([*+-/%^]\)0*[01]!/{
+ s//\11/
+ b loop
+}
+/\([0-9]*\)!/{
+ s//(\1-1)!*\1/
+ b loop
+}
+# sign simplifications
+/^-\([0-9]*\)\([*/%]\)-\([0-9]*\)$/{
+ s//\1\2\3/
+ b loop
+}
+/^\([0-9]*\)\([*/%]\)-\([0-9]*\)$/{
+ s//-\1\2\3/
+ b loop
+}
+/^-\([0-9][0-9]*\)[+]*-\([0-9][0-9]*\)$/{
+ s//\1+\2/
+ x
+ s/\(.*\)/()-@@\1/
+ x
+ b loop
+}
+/^-\([0-9]*\)[+]\([0-9]\)*$/{
+ s//\2-\1/
+ b loop
+}
+/^-.*[-+*/%].*/{
+ H
+ s/^-//
+ x
+ s/^\(.*\)\n-.*$/()-@@\1/
+ x
+ b loop
+}
+# can we simplify multiplications
+/^\([0-9]*\)\([*][0-9]*[1-9]\)00*$/{
+ H
+ s//\1\2/
+ x
+ s/^\(.*\)\n[0-9]*[*][0-9]*[1-9]\(00*\)$/()@\2@\1/
+ x
+ b loop
+}
+/^\([0-9][1-9]*\)00*\([*][0-9]*\)$/{
+ H
+ s//\1\2/
+ x
+ s/^\(.*\)\n[0-9][1-9]*\(00*\)[*][0-9]*$/()@\2@\1/
+ x
+ b loop
+}
+# can we simplify division (20/30 -> 2/3)
+/^\([0-9][0-9]*\)0\([/%]\)\([0-9][0-9]*\)0$/{
+ s//\1\2\3/
+ b loop
+}
+# n/1 -> n
+/^0*\([0-9][0-9]*\)0[/]0*1$/{
+ s//\1/
+ b loop
+}
+# n%2 -> last_digit(n)%2 (same for 1, BTW) N.B. NO LOOP
+/^[0-9]*\([0-9]\)%0*\([12]\)$/{
+ s//\1%\2/
+}
+# move any mul/divs to the front via parans
+/^\([0-9+]*\)\([-+]\)\([0-9]*[*/][0-9*/]*\)/{
+ s//\1\2(\3)/
+ b loop
+}
+# can we div or mul
+/^[0-9]*[*][0-9]*$/{
+ b mul
+}
+/^[0-9]*[/%]0*$/{
+ i\
+divide by zero
+ d
+}
+/^[0-9]*[/%][0-9]*$/{
+ H
+ s/\([0-9]\).*[/%]/\1-/
+ x
+ s/^\(.*\)\n\([0-9]\)\([0-9]*\)\([/%]\)\([0-9]*\).*$/.\4\3q0r\2-\5@\1/
+ x
+ b loop
+}
+/^\([0-9]*[*/%][0-9]*\)\(.*\)/{
+ H
+ s//\1/
+ x
+ s/^\(.*\)\n\([0-9]*[*/][0-9]*\)\(.*\)$/()@\3@\1/
+ x
+ b loop
+}
+# can we add or subtract -- note subtract hold expression for underflow
+/^[0-9]*[+][0-9]*$/{
+ s/$/=/
+ b add
+}
+/^[0-9][0-9]*-[0-9]*$/{
+ H
+ s/$/=/
+ b sub
+}
+/^\([0-9][0-9]*[-+][0-9]*\)\(.*\)/{
+ H
+ s//\1/
+ x
+ s/^\(.*\)\n\([0-9]*[-+][0-9]*\)\(.*\)$/()@\3@\1/
+ x
+ b loop
+}
+# look in hold space for stack to reduce
+x
+/^done$/{
+ x
+ s/^0*\([0-9][0-9]*\)/\1/
+ p
+ d
+}
+# .[/%] numerator q quotient r remainder-divisor @stack
+/^\./{
+ x
+ /^[^-]/{
+ H
+ x
+ s/.\(.\)\([0-9]*\)q\([^r]*\)r\([0-9]*\)-\([0-9]*\)@\(.*\)\n\(.*\)/.\1\2q\3+1r\7-\5@\6/
+ h
+ s/..[0-9]*q[^r]*r\([0-9]*-[0-9]*\)@.*/\1/
+ b loop
+ }
+ /^-/{
+ g
+ /.\(.\)\([0-9]\)\([0-9]*\)q\([^r]*\)r0*\([0-9]*\)-\([^@]*\)@.*/{
+ s//\5\2-\6/
+ x
+ s/.\(.\)\([0-9]\)\([0-9]*\)q\([^r]*\)r0*\([0-9]*\)-\([0-9]*\)@\(.*\)/.\1\3q(\4)*10r\5\2-\6@\7/
+ x
+ b loop
+ }
+# no digits to shift on
+ s/^\.[/]q\([^r]*\)r[^@]*@.*/\1/
+ s/^\.[%]q[^r]*r0*\([0-9][0-9]*\)-[^@]*@.*/\1/
+ /^\./{
+ i\
+divide error
+ q
+ }
+ x
+ s/^\.[/%]q[^r]*r[^@]*@\(.*\)/\1/
+ x
+ b loop
+ }
+}
+/^()/{
+ s///
+ x
+ G
+ s/\(.*\)\n\([^@]*\)@\([^@]*\)@\(.*\)/\2\1\3/
+ x
+ s/[^@]*@[^@]*@\(.*\)/\1/
+ x
+ b loop
+}
+i\
+help, stack problem - the hold space
+p
+x
+i\
+and the pat space
+p
+i\
+quit
+q
+
+# turn mul into add until 1*x -> x, 0*x -> 0
+: mul
+/^00*\*.*/{
+ s//0/
+ b loop
+}
+/^0*1\*/{
+ s///
+: leading
+ s/^0*\([0-9][0-9]*\)/\1/
+ b loop
+}
+s/^\([0-9]*\)0\*\([0-9]*\)/\1*\20/
+s/^\([0-9]*\)1\*\([0-9]*\)/\1*\20+\2/
+s/^\([0-9]*\)2\*\([0-9]*\)/\1*\20+(\2+\2)/
+s/^\([0-9]*\)3\*\([0-9]*\)/\1*\20+(\2+\2+\2)/
+s/^\([0-9]*\)4\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2)/
+s/^\([0-9]*\)5\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2)/
+s/^\([0-9]*\)6\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2+\2)/
+s/^\([0-9]*\)7\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2+\2+\2)/
+s/^\([0-9]*\)8\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2+\2+\2+\2)/
+s/^\([0-9]*\)9\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2+\2+\2+\2+\2)/
+/^0*\*[0-9]*[+]*\(.*\)/{
+ s//\1/
+ b loop
+}
+b mul
+
+# get rid of a plus term until 0+x -> x
+: add
+/^[+]\([0-9+*]*\)=/{
+ s//\1/
+ b leading
+}
+/^\([0-9*]*\)[+]=/{
+ s//\1/
+ b loop
+}
+/^\([0-9]*\)0[+]\([0-9]*\)\([0-9]\)=/{
+ s//\1+\2=\3/
+ b add
+}
+/^\([0-9]*\)\([0-9]\)[+]\([0-9]*\)0=/{
+ s//\1+\3=\2/
+ b add
+}
+s/^\([0-9]*\)1[+]/\10+/
+s/^\([0-9]*\)2[+]/\11+/
+s/^\([0-9]*\)3[+]/\12+/
+s/^\([0-9]*\)4[+]/\13+/
+s/^\([0-9]*\)5[+]/\14+/
+s/^\([0-9]*\)6[+]/\15+/
+s/^\([0-9]*\)7[+]/\16+/
+s/^\([0-9]*\)8[+]/\17+/
+s/^\([0-9]*\)9[+]/\18+/
+
+s/9=\([0-9]*\)$/_=\1/
+s/8=\([0-9]*\)$/9=\1/
+s/7=\([0-9]*\)$/8=\1/
+s/6=\([0-9]*\)$/7=\1/
+s/5=\([0-9]*\)$/6=\1/
+s/4=\([0-9]*\)$/5=\1/
+s/3=\([0-9]*\)$/4=\1/
+s/2=\([0-9]*\)$/3=\1/
+s/1=\([0-9]*\)$/2=\1/
+/_/{
+ s//_0/
+ : inc
+ s/9_/_0/
+ s/8_/9/
+ s/7_/8/
+ s/6_/7/
+ s/5_/6/
+ s/4_/5/
+ s/3_/4/
+ s/2_/3/
+ s/1_/2/
+ s/0_/1/
+ s/[+]_/+1/
+ /_/b inc
+}
+b add
+
+# get rid of a sub term until /-0*=/ or underflow
+: sub
+/^\([0-9]*\)-0*=/{
+ s//\1/
+ x
+ s/\(.*\)\n.*$/\1/
+ x
+ b leading
+}
+/^-\([0-9].*\)=/{
+: under
+ g
+ s/.*\n\([0-9]*\)-\([0-9]*\).*/-(\2-\1)/
+ x
+ s/\(.*\)\n.*/\1/
+ x
+ b loop
+}
+/^\([0-9]*\)\([0-9]\)-\([0-9]*\)0=/{
+ s//\1-\3=\2/
+ b sub
+}
+s/1=/0=/
+s/2=/1=/
+s/3=/2=/
+s/4=/3=/
+s/5=/4=/
+s/6=/5=/
+s/7=/6=/
+s/8=/7=/
+s/9=/8=/
+
+s/^\([0-9]*\)1-/\1_-/
+s/^\([0-9]*\)2-/\11-/
+s/^\([0-9]*\)3-/\12-/
+s/^\([0-9]*\)4-/\13-/
+s/^\([0-9]*\)5-/\14-/
+s/^\([0-9]*\)6-/\15-/
+s/^\([0-9]*\)7-/\16-/
+s/^\([0-9]*\)8-/\17-/
+s/^\([0-9]*\)9-/\18-/
+s/^\([0-9]*\)0-/\1'9-/
+s/_/0/
+
+: scarry
+/0'/{
+ s//'9/
+ b scarry
+}
+/^'/{
+ b under
+}
+s/1'/0/
+s/2'/1/
+s/3'/2/
+s/4'/3/
+s/5'/4/
+s/6'/5/
+s/7'/6/
+s/8'/7/
+s/9'/8/
+
+b sub
diff --git a/tools/regression/usr.bin/sed/multitest.t b/tools/regression/usr.bin/sed/multitest.t
new file mode 100644
index 0000000..9c0881f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/multitest.t
@@ -0,0 +1,472 @@
+#!/bin/sh -
+#
+# Copyright (c) 1992 Diomidis Spinellis.
+# Copyright (c) 1992, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 4. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# @(#)sed.test 8.1 (Berkeley) 6/6/93
+#
+# $FreeBSD$
+#
+
+# sed Regression Tests
+#
+# The directory regress.test.out contains the expected test results
+#
+# These are the regression tests created during the development of the
+# BSD sed. The reference file naming scheme used in this script can't
+# handle gracefully the insertion of new tests between existing ones.
+# Therefore, either use the new m4-based regress.t framework, or add
+# tests after the last existing test.
+
+main()
+{
+ REGRESS=regress.multitest.out
+ DICT=/usr/share/dict/words
+
+ awk 'END { for (i = 1; i < 15; i++) print "l1_" i}' </dev/null >lines1
+ awk 'END { for (i = 1; i < 10; i++) print "l2_" i}' </dev/null >lines2
+
+ echo "1..121"
+
+ exec 4>&1 5>&2
+ tests
+ exec 1>&4 2>&5
+
+ # Remove temporary files
+ rm -f current.out lines[1-4] script[1-2]
+}
+
+tests()
+{
+ SED=sed
+ MARK=0
+
+ test_args
+ test_addr
+ test_group
+ test_acid
+ test_branch
+ test_pattern
+ test_print
+ test_subst
+ test_error
+ # Handle the result of the last test
+ result
+}
+
+# Display a test's result
+result()
+{
+ if [ "$TODO" = '1' ] ; then
+ TODO='TODO '
+ else
+ TODO=''
+ fi
+ if ! [ -r $REGRESS/${MARK}_${TESTNAME} ] ; then
+ echo "Seeding $REGRESS/${MARK}_${TESTNAME} with current result" 1>&2
+ cp current.out $REGRESS/${MARK}_${TESTNAME}
+ fi
+ if diff -c $REGRESS/${MARK}_${TESTNAME} current.out ; then
+ echo "ok $MARK $TESTNAME # $TODO$COMMENT"
+ else
+ echo "not ok $MARK $TESTNAME # $TODO$COMMENT"
+ fi 1>&4 2>&5
+}
+
+# Mark the beginning of each test
+mark()
+{
+ [ $MARK -gt 0 ] && result
+ MARK=`expr $MARK + 1`
+ TESTNAME=$1
+ exec 1>&4 2>&5
+ exec >"current.out"
+}
+
+test_args()
+{
+ COMMENT='Argument parsing - first type'
+ mark '1.1'
+ $SED 's/^/e1_/p' lines1
+ mark '1.2' ; $SED -n 's/^/e1_/p' lines1
+ mark '1.3'
+ $SED 's/^/e1_/p' <lines1
+ mark '1.4' ; $SED -n 's/^/e1_/p' <lines1
+ COMMENT='Argument parsing - second type'
+ mark '1.4.1'
+ $SED -e '' <lines1
+ echo 's/^/s1_/p' >script1
+ echo 's/^/s2_/p' >script2
+ mark '1.5'
+ $SED -f script1 lines1
+ mark '1.6'
+ $SED -f script1 <lines1
+ mark '1.7'
+ $SED -e 's/^/e1_/p' lines1
+ mark '1.8'
+ $SED -e 's/^/e1_/p' <lines1
+ mark '1.9' ; $SED -n -f script1 lines1
+ mark '1.10' ; $SED -n -f script1 <lines1
+ mark '1.11' ; $SED -n -e 's/^/e1_/p' lines1
+ mark '1.12'
+ $SED -n -e 's/^/e1_/p' <lines1
+ mark '1.13'
+ $SED -e 's/^/e1_/p' -e 's/^/e2_/p' lines1
+ mark '1.14'
+ $SED -f script1 -f script2 lines1
+ mark '1.15'
+ $SED -e 's/^/e1_/p' -f script1 lines1
+ mark '1.16'
+ $SED -e 's/^/e1_/p' lines1 lines1
+ # POSIX D11.2:11251
+ mark '1.17' ; $SED p <lines1 lines1
+cat >script1 <<EOF
+#n
+# A comment
+
+p
+EOF
+ mark '1.18' ; $SED -f script1 <lines1 lines1
+}
+
+test_addr()
+{
+ COMMENT='Address ranges'
+ mark '2.1' ; $SED -n -e '4p' lines1
+ mark '2.2' ; $SED -n -e '20p' lines1 lines2
+ mark '2.3' ; $SED -n -e '$p' lines1
+ mark '2.4' ; $SED -n -e '$p' lines1 lines2
+ mark '2.5' ; $SED -n -e '$a\
+hello' /dev/null
+ mark '2.6' ; $SED -n -e '$p' lines1 /dev/null lines2
+ # Should not print anything
+ mark '2.7' ; $SED -n -e '20p' lines1
+ mark '2.8' ; $SED -n -e '/NOTFOUND/p' lines1
+ mark '2.9' ; $SED -n '/l1_7/p' lines1
+ mark '2.10' ; $SED -n ' /l1_7/ p' lines1
+ mark '2.11' ; $SED -n '\_l1\_7_p' lines1
+ mark '2.12' ; $SED -n '1,4p' lines1
+ mark '2.13' ; $SED -n '1,$p' lines1 lines2
+ mark '2.14' ; $SED -n '1,/l2_9/p' lines1 lines2
+ mark '2.15' ; $SED -n '/4/,$p' lines1 lines2
+ mark '2.16' ; $SED -n '/4/,20p' lines1 lines2
+ mark '2.17' ; $SED -n '/4/,/10/p' lines1 lines2
+ mark '2.18' ; $SED -n '/l2_3/,/l1_8/p' lines1 lines2
+ mark '2.19' ; $SED -n '12,3p' lines1 lines2
+ mark '2.20' ; $SED -n '/l1_7/,3p' lines1 lines2
+}
+
+test_group()
+{
+ COMMENT='Brace and other grouping'
+ mark '3.1' ; $SED -e '
+4,12 {
+ s/^/^/
+ s/$/$/
+ s/_/T/
+}' lines1
+ mark '3.2' ; $SED -e '
+4,12 {
+ s/^/^/
+ /6/,/10/ {
+ s/$/$/
+ /8/ s/_/T/
+ }
+}' lines1
+ mark '3.3' ; $SED -e '
+4,12 !{
+ s/^/^/
+ /6/,/10/ !{
+ s/$/$/
+ /8/ !s/_/T/
+ }
+}' lines1
+ mark '3.4' ; $SED -e '4,12!s/^/^/' lines1
+}
+
+test_acid()
+{
+ COMMENT='Commands a c d and i'
+ mark '4.1' ; $SED -n -e '
+s/^/before_i/p
+20i\
+inserted
+s/^/after_i/p
+' lines1 lines2
+ mark '4.2' ; $SED -n -e '
+5,12s/^/5-12/
+s/^/before_a/p
+/5-12/a\
+appended
+s/^/after_a/p
+' lines1 lines2
+ mark '4.3'
+ $SED -n -e '
+s/^/^/p
+/l1_/a\
+appended
+8,10N
+s/$/$/p
+' lines1 lines2
+ mark '4.4' ; $SED -n -e '
+c\
+hello
+' lines1
+ mark '4.5' ; $SED -n -e '
+8c\
+hello
+' lines1
+ mark '4.6' ; $SED -n -e '
+3,14c\
+hello
+' lines1
+# SunOS and GNU sed behave differently. We follow POSIX
+ mark '4.7' ; $SED -n -e '
+8,3c\
+hello
+' lines1
+ mark '4.8' ; $SED d <lines1
+}
+
+test_branch()
+{
+ COMMENT='Labels and branching'
+ mark '5.1' ; $SED -n -e '
+b label4
+:label3
+s/^/label3_/p
+b end
+:label4
+2,12b label1
+b label2
+:label1
+s/^/label1_/p
+b
+:label2
+s/^/label2_/p
+b label3
+:end
+' lines1
+ mark '5.2'
+ $SED -n -e '
+s/l1_/l2_/
+t ok
+b
+:ok
+s/^/tested /p
+' lines1 lines2
+# SunOS and GNU sed behave as follows: lines 9-$ aren't printed at all
+ mark '5.3' ; $SED -n -e '
+5,8b inside
+1,5 {
+ s/^/^/p
+ :inside
+ s/$/$/p
+}
+' lines1
+# Check that t clears the substitution done flag
+ mark '5.4' ; $SED -n -e '
+1,8s/^/^/
+t l1
+:l1
+t l2
+s/$/$/p
+b
+:l2
+s/^/ERROR/
+' lines1
+# Check that reading a line clears the substitution done flag
+ mark '5.5'
+ $SED -n -e '
+t l2
+1,8s/^/^/p
+2,7N
+b
+:l2
+s/^/ERROR/p
+' lines1
+ mark '5.6' ; $SED 5q lines1
+ mark '5.7' ; $SED -e '
+5i\
+hello
+5q' lines1
+# Branch across block boundary
+ mark '5.8' ; $SED -e '
+{
+:b
+}
+s/l/m/
+tb' lines1
+}
+
+test_pattern()
+{
+COMMENT='Pattern space commands'
+# Check that the pattern space is deleted
+ mark '6.1' ; $SED -n -e '
+c\
+changed
+p
+' lines1
+ mark '6.2' ; $SED -n -e '
+4d
+p
+' lines1
+ mark '6.3'
+ $SED -e 'N;N;N;D' lines1
+ mark '6.4' ; $SED -e '
+2h
+3H
+4g
+5G
+6x
+6p
+6x
+6p
+' lines1
+ mark '6.5' ; $SED -e '4n' lines1
+ mark '6.6' ; $SED -n -e '4n' lines1
+}
+
+test_print()
+{
+ COMMENT='Print and file routines'
+ awk 'END {for (i = 1; i < 256; i++) printf("%c", i);print "\n"}' \
+ </dev/null >lines3
+ # GNU and SunOS sed behave differently here
+ mark '7.1'
+ $SED -n l lines3
+ mark '7.2' ; $SED -e '/l2_/=' lines1 lines2
+ rm -f lines4
+ mark '7.3' ; $SED -e '3,12w lines4' lines1
+ COMMENT='w results'
+ cat lines4
+ mark '7.4' ; $SED -e '4r lines2' lines1
+ mark '7.5' ; $SED -e '5r /dev/dds' lines1
+ mark '7.6' ; $SED -e '6r /dev/null' lines1
+ mark '7.7'
+ sed '200q' $DICT | sed 's$.*$s/^/&/w tmpdir/&$' >script1
+ rm -rf tmpdir
+ mkdir tmpdir
+ $SED -f script1 lines1
+ cat tmpdir/*
+ rm -rf tmpdir
+ mark '7.8'
+ echo line1 > lines3
+ echo "" >> lines3
+ TODO=1
+ $SED -n -e '$p' lines3 /dev/null
+
+}
+
+test_subst()
+{
+ COMMENT='Substitution commands'
+ mark '8.1' ; $SED -e 's/./X/g' lines1
+ mark '8.2' ; $SED -e 's,.,X,g' lines1
+# SunOS sed thinks we are escaping . as wildcard, not as separator
+ mark '8.3'
+ $SED -e 's.\..X.g' lines1
+ mark '8.4' ; $SED -e 's/[\/]/Q/' lines1
+ mark '8.5' ; $SED -e 's_\__X_' lines1
+ mark '8.6' ; $SED -e 's/./(&)/g' lines1
+ mark '8.7' ; $SED -e 's/./(\&)/g' lines1
+ mark '8.8' ; $SED -e 's/\(.\)\(.\)\(.\)/x\3x\2x\1/g' lines1
+ mark '8.9' ; $SED -e 's/_/u0\
+u1\
+u2/g' lines1
+ mark '8.10'
+ $SED -e 's/./X/4' lines1
+ rm -f lines4
+ mark '8.11' ; $SED -e 's/1/X/w lines4' lines1
+ COMMENT='s wfile results'
+ cat lines4
+ mark '8.12' ; $SED -e 's/[123]/X/g' lines1
+ mark '8.13' ; $SED -e 'y/0123456789/9876543210/' lines1
+ mark '8.14' ;
+ $SED -e 'y10\123456789198765432\101' lines1
+ mark '8.15' ; $SED -e '1N;2y/\n/X/' lines1
+ mark '8.16'
+ echo 'eeefff' | $SED -e '
+ p
+ s/e/X/p
+ :x
+ s//Y/p
+ # Establish limit counter in the hold space
+ # GNU sed version 3.02 enters into an infinite loop here
+ x
+ /.\{10\}/ {
+ s/.*/ERROR/
+ b
+ }
+ s/.*/&./
+ x
+ /f/bx
+ '
+ # POSIX does not say that this should work,
+ # but it does for GNU, BSD, and SunOS
+ mark '8.17' ; $SED -e 's/[/]/Q/' lines1
+}
+
+test_error()
+{
+ COMMENT='Error cases'
+ mark '9.1' ; $SED -x 2>/dev/null ; echo $?
+ mark '9.2' ; $SED -f 2>/dev/null ; echo $?
+ mark '9.3' ; $SED -e 2>/dev/null ; echo $?
+ mark '9.4' ; $SED -f /dev/xyzzyxyzy 2>/dev/null ; echo $?
+ mark '9.5' ; $SED p /dev/xyzzyxyzy 2>/dev/null ; echo $?
+ mark '9.6' ; $SED -f /bin/sh 2>/dev/null ; echo $?
+ mark '9.7' ; $SED '{' 2>/dev/null ; echo $?
+ mark '9.8' ; $SED '{' 2>/dev/null ; echo $?
+ mark '9.9' ; $SED '/hello/' 2>/dev/null ; echo $?
+ mark '9.10' ; $SED '1,/hello/' 2>/dev/null ; echo $?
+ mark '9.11' ; $SED -e '-5p' 2>/dev/null ; echo $?
+ mark '9.12' ; $SED '/jj' 2>/dev/null ; echo $?
+ mark '9.13' ; $SED 'a hello' 2>/dev/null ; echo $?
+ mark '9.14' ; $SED 'a \ hello' 2>/dev/null ; echo $?
+ mark '9.15' ; $SED 'b foo' 2>/dev/null ; echo $?
+ mark '9.16' ; $SED 'd hello' 2>/dev/null ; echo $?
+ mark '9.17' ; $SED 's/aa' 2>/dev/null ; echo $?
+ mark '9.18' ; $SED 's/aa/' 2>/dev/null ; echo $?
+ mark '9.19' ; $SED 's/a/b' 2>/dev/null ; echo $?
+ mark '9.20' ; $SED 's/a/b/c/d' 2>/dev/null ; echo $?
+ mark '9.21' ; $SED 's/a/b/ 1 2' 2>/dev/null ; echo $?
+ mark '9.22' ; $SED 's/a/b/ 1 g' 2>/dev/null ; echo $?
+ mark '9.23' ; $SED 's/a/b/w' 2>/dev/null ; echo $?
+ mark '9.24' ; $SED 'y/aa' 2>/dev/null ; echo $?
+ mark '9.25' ; $SED 'y/aa/b/' 2>/dev/null ; echo $?
+ mark '9.26' ; $SED 'y/aa/' 2>/dev/null ; echo $?
+ mark '9.27' ; $SED 'y/a/b' 2>/dev/null ; echo $?
+ mark '9.28' ; $SED 'y/a/b/c/d' 2>/dev/null ; echo $?
+ mark '9.29' ; $SED '!' 2>/dev/null ; echo $?
+ mark '9.30' ; $SED supercalifrangolisticexprialidociussupercalifrangolisticexcius 2>/dev/null ; echo $?
+ mark '9.31' ; $SED '' /dev/null 2>/dev/null ; echo $?
+}
+
+main
diff --git a/tools/regression/usr.bin/sed/regress.G.out b/tools/regression/usr.bin/sed/regress.G.out
new file mode 100644
index 0000000..49c277c
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.G.out
@@ -0,0 +1,8 @@
+input
+
+data
+
+for validation
+
+of sed(1)
+
diff --git a/tools/regression/usr.bin/sed/regress.P.out b/tools/regression/usr.bin/sed/regress.P.out
new file mode 100644
index 0000000..4d3284f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.P.out
@@ -0,0 +1,8 @@
+input
+input
+data
+data
+for validation
+for validation
+of sed(1)
+of sed(1)
diff --git a/tools/regression/usr.bin/sed/regress.b2a.out b/tools/regression/usr.bin/sed/regress.b2a.out
new file mode 100644
index 0000000..a44df51
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.b2a.out
@@ -0,0 +1,3 @@
+data
+for validation
+of sed(1)
diff --git a/tools/regression/usr.bin/sed/regress.bcb.out b/tools/regression/usr.bin/sed/regress.bcb.out
new file mode 100644
index 0000000..2a26e6a
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.bcb.out
@@ -0,0 +1,4 @@
+input
+data
+for validation
+of sed(1)
diff --git a/tools/regression/usr.bin/sed/regress.c0.out b/tools/regression/usr.bin/sed/regress.c0.out
new file mode 100644
index 0000000..a1f8944
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.c0.out
@@ -0,0 +1,4 @@
+foo
+foo
+foo
+foo
diff --git a/tools/regression/usr.bin/sed/regress.c1.out b/tools/regression/usr.bin/sed/regress.c1.out
new file mode 100644
index 0000000..21af01e
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.c1.out
@@ -0,0 +1,4 @@
+input
+data
+for validation
+foo
diff --git a/tools/regression/usr.bin/sed/regress.c2.out b/tools/regression/usr.bin/sed/regress.c2.out
new file mode 100644
index 0000000..6c54a8d
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.c2.out
@@ -0,0 +1,3 @@
+input
+data
+foo
diff --git a/tools/regression/usr.bin/sed/regress.c3.out b/tools/regression/usr.bin/sed/regress.c3.out
new file mode 100644
index 0000000..6c54a8d
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.c3.out
@@ -0,0 +1,3 @@
+input
+data
+foo
diff --git a/tools/regression/usr.bin/sed/regress.hanoi.out b/tools/regression/usr.bin/sed/regress.hanoi.out
new file mode 100644
index 0000000..ec39ea2
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.hanoi.out
@@ -0,0 +1,17 @@
+:abcd: : :
+:abc : :d :
+:ab :c :d :
+:ab :cd : :
+:a :cd :b :
+:ad :c :b :
+:ad : :bc :
+:a : :bcd :
+: :a :bcd :
+: :ad :bc :
+:c :ad :b :
+:cd :a :b :
+:cd :ab : :
+:c :ab :d :
+: :abc :d :
+: :abcd: :
+Done! Try another, or end with ^D.
diff --git a/tools/regression/usr.bin/sed/regress.in b/tools/regression/usr.bin/sed/regress.in
new file mode 100644
index 0000000..2a26e6a
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.in
@@ -0,0 +1,4 @@
+input
+data
+for validation
+of sed(1)
diff --git a/tools/regression/usr.bin/sed/regress.math.out b/tools/regression/usr.bin/sed/regress.math.out
new file mode 100644
index 0000000..3fdcd7c
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.math.out
@@ -0,0 +1 @@
+67
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/100_9.10 b/tools/regression/usr.bin/sed/regress.multitest.out/100_9.10
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/100_9.10
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/101_9.11 b/tools/regression/usr.bin/sed/regress.multitest.out/101_9.11
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/101_9.11
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/102_9.12 b/tools/regression/usr.bin/sed/regress.multitest.out/102_9.12
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/102_9.12
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/103_9.13 b/tools/regression/usr.bin/sed/regress.multitest.out/103_9.13
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/103_9.13
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/104_9.14 b/tools/regression/usr.bin/sed/regress.multitest.out/104_9.14
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/104_9.14
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/105_9.15 b/tools/regression/usr.bin/sed/regress.multitest.out/105_9.15
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/105_9.15
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/106_9.16 b/tools/regression/usr.bin/sed/regress.multitest.out/106_9.16
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/106_9.16
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/107_9.17 b/tools/regression/usr.bin/sed/regress.multitest.out/107_9.17
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/107_9.17
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/108_9.18 b/tools/regression/usr.bin/sed/regress.multitest.out/108_9.18
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/108_9.18
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/109_9.19 b/tools/regression/usr.bin/sed/regress.multitest.out/109_9.19
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/109_9.19
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/10_1.9 b/tools/regression/usr.bin/sed/regress.multitest.out/10_1.9
new file mode 100644
index 0000000..44f4ec3
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/10_1.9
@@ -0,0 +1,14 @@
+s1_l1_1
+s1_l1_2
+s1_l1_3
+s1_l1_4
+s1_l1_5
+s1_l1_6
+s1_l1_7
+s1_l1_8
+s1_l1_9
+s1_l1_10
+s1_l1_11
+s1_l1_12
+s1_l1_13
+s1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/110_9.20 b/tools/regression/usr.bin/sed/regress.multitest.out/110_9.20
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/110_9.20
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/111_9.21 b/tools/regression/usr.bin/sed/regress.multitest.out/111_9.21
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/111_9.21
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/112_9.22 b/tools/regression/usr.bin/sed/regress.multitest.out/112_9.22
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/112_9.22
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/113_9.23 b/tools/regression/usr.bin/sed/regress.multitest.out/113_9.23
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/113_9.23
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/114_9.24 b/tools/regression/usr.bin/sed/regress.multitest.out/114_9.24
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/114_9.24
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/115_9.25 b/tools/regression/usr.bin/sed/regress.multitest.out/115_9.25
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/115_9.25
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/116_9.26 b/tools/regression/usr.bin/sed/regress.multitest.out/116_9.26
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/116_9.26
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/117_9.27 b/tools/regression/usr.bin/sed/regress.multitest.out/117_9.27
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/117_9.27
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/118_9.28 b/tools/regression/usr.bin/sed/regress.multitest.out/118_9.28
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/118_9.28
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/119_9.29 b/tools/regression/usr.bin/sed/regress.multitest.out/119_9.29
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/119_9.29
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/11_1.10 b/tools/regression/usr.bin/sed/regress.multitest.out/11_1.10
new file mode 100644
index 0000000..44f4ec3
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/11_1.10
@@ -0,0 +1,14 @@
+s1_l1_1
+s1_l1_2
+s1_l1_3
+s1_l1_4
+s1_l1_5
+s1_l1_6
+s1_l1_7
+s1_l1_8
+s1_l1_9
+s1_l1_10
+s1_l1_11
+s1_l1_12
+s1_l1_13
+s1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/120_9.30 b/tools/regression/usr.bin/sed/regress.multitest.out/120_9.30
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/120_9.30
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/121_9.31 b/tools/regression/usr.bin/sed/regress.multitest.out/121_9.31
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/121_9.31
@@ -0,0 +1 @@
+0
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/12_1.11 b/tools/regression/usr.bin/sed/regress.multitest.out/12_1.11
new file mode 100644
index 0000000..7af945d
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/12_1.11
@@ -0,0 +1,14 @@
+e1_l1_1
+e1_l1_2
+e1_l1_3
+e1_l1_4
+e1_l1_5
+e1_l1_6
+e1_l1_7
+e1_l1_8
+e1_l1_9
+e1_l1_10
+e1_l1_11
+e1_l1_12
+e1_l1_13
+e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/13_1.12 b/tools/regression/usr.bin/sed/regress.multitest.out/13_1.12
new file mode 100644
index 0000000..7af945d
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/13_1.12
@@ -0,0 +1,14 @@
+e1_l1_1
+e1_l1_2
+e1_l1_3
+e1_l1_4
+e1_l1_5
+e1_l1_6
+e1_l1_7
+e1_l1_8
+e1_l1_9
+e1_l1_10
+e1_l1_11
+e1_l1_12
+e1_l1_13
+e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/14_1.13 b/tools/regression/usr.bin/sed/regress.multitest.out/14_1.13
new file mode 100644
index 0000000..90582c8
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/14_1.13
@@ -0,0 +1,42 @@
+e1_l1_1
+e2_e1_l1_1
+e2_e1_l1_1
+e1_l1_2
+e2_e1_l1_2
+e2_e1_l1_2
+e1_l1_3
+e2_e1_l1_3
+e2_e1_l1_3
+e1_l1_4
+e2_e1_l1_4
+e2_e1_l1_4
+e1_l1_5
+e2_e1_l1_5
+e2_e1_l1_5
+e1_l1_6
+e2_e1_l1_6
+e2_e1_l1_6
+e1_l1_7
+e2_e1_l1_7
+e2_e1_l1_7
+e1_l1_8
+e2_e1_l1_8
+e2_e1_l1_8
+e1_l1_9
+e2_e1_l1_9
+e2_e1_l1_9
+e1_l1_10
+e2_e1_l1_10
+e2_e1_l1_10
+e1_l1_11
+e2_e1_l1_11
+e2_e1_l1_11
+e1_l1_12
+e2_e1_l1_12
+e2_e1_l1_12
+e1_l1_13
+e2_e1_l1_13
+e2_e1_l1_13
+e1_l1_14
+e2_e1_l1_14
+e2_e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/15_1.14 b/tools/regression/usr.bin/sed/regress.multitest.out/15_1.14
new file mode 100644
index 0000000..fd78274
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/15_1.14
@@ -0,0 +1,42 @@
+s1_l1_1
+s2_s1_l1_1
+s2_s1_l1_1
+s1_l1_2
+s2_s1_l1_2
+s2_s1_l1_2
+s1_l1_3
+s2_s1_l1_3
+s2_s1_l1_3
+s1_l1_4
+s2_s1_l1_4
+s2_s1_l1_4
+s1_l1_5
+s2_s1_l1_5
+s2_s1_l1_5
+s1_l1_6
+s2_s1_l1_6
+s2_s1_l1_6
+s1_l1_7
+s2_s1_l1_7
+s2_s1_l1_7
+s1_l1_8
+s2_s1_l1_8
+s2_s1_l1_8
+s1_l1_9
+s2_s1_l1_9
+s2_s1_l1_9
+s1_l1_10
+s2_s1_l1_10
+s2_s1_l1_10
+s1_l1_11
+s2_s1_l1_11
+s2_s1_l1_11
+s1_l1_12
+s2_s1_l1_12
+s2_s1_l1_12
+s1_l1_13
+s2_s1_l1_13
+s2_s1_l1_13
+s1_l1_14
+s2_s1_l1_14
+s2_s1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/16_1.15 b/tools/regression/usr.bin/sed/regress.multitest.out/16_1.15
new file mode 100644
index 0000000..7b3700c
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/16_1.15
@@ -0,0 +1,42 @@
+e1_l1_1
+s1_e1_l1_1
+s1_e1_l1_1
+e1_l1_2
+s1_e1_l1_2
+s1_e1_l1_2
+e1_l1_3
+s1_e1_l1_3
+s1_e1_l1_3
+e1_l1_4
+s1_e1_l1_4
+s1_e1_l1_4
+e1_l1_5
+s1_e1_l1_5
+s1_e1_l1_5
+e1_l1_6
+s1_e1_l1_6
+s1_e1_l1_6
+e1_l1_7
+s1_e1_l1_7
+s1_e1_l1_7
+e1_l1_8
+s1_e1_l1_8
+s1_e1_l1_8
+e1_l1_9
+s1_e1_l1_9
+s1_e1_l1_9
+e1_l1_10
+s1_e1_l1_10
+s1_e1_l1_10
+e1_l1_11
+s1_e1_l1_11
+s1_e1_l1_11
+e1_l1_12
+s1_e1_l1_12
+s1_e1_l1_12
+e1_l1_13
+s1_e1_l1_13
+s1_e1_l1_13
+e1_l1_14
+s1_e1_l1_14
+s1_e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/17_1.16 b/tools/regression/usr.bin/sed/regress.multitest.out/17_1.16
new file mode 100644
index 0000000..2bfa3fe
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/17_1.16
@@ -0,0 +1,56 @@
+e1_l1_1
+e1_l1_1
+e1_l1_2
+e1_l1_2
+e1_l1_3
+e1_l1_3
+e1_l1_4
+e1_l1_4
+e1_l1_5
+e1_l1_5
+e1_l1_6
+e1_l1_6
+e1_l1_7
+e1_l1_7
+e1_l1_8
+e1_l1_8
+e1_l1_9
+e1_l1_9
+e1_l1_10
+e1_l1_10
+e1_l1_11
+e1_l1_11
+e1_l1_12
+e1_l1_12
+e1_l1_13
+e1_l1_13
+e1_l1_14
+e1_l1_14
+e1_l1_1
+e1_l1_1
+e1_l1_2
+e1_l1_2
+e1_l1_3
+e1_l1_3
+e1_l1_4
+e1_l1_4
+e1_l1_5
+e1_l1_5
+e1_l1_6
+e1_l1_6
+e1_l1_7
+e1_l1_7
+e1_l1_8
+e1_l1_8
+e1_l1_9
+e1_l1_9
+e1_l1_10
+e1_l1_10
+e1_l1_11
+e1_l1_11
+e1_l1_12
+e1_l1_12
+e1_l1_13
+e1_l1_13
+e1_l1_14
+e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/18_1.17 b/tools/regression/usr.bin/sed/regress.multitest.out/18_1.17
new file mode 100644
index 0000000..0833b55
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/18_1.17
@@ -0,0 +1,28 @@
+l1_1
+l1_1
+l1_2
+l1_2
+l1_3
+l1_3
+l1_4
+l1_4
+l1_5
+l1_5
+l1_6
+l1_6
+l1_7
+l1_7
+l1_8
+l1_8
+l1_9
+l1_9
+l1_10
+l1_10
+l1_11
+l1_11
+l1_12
+l1_12
+l1_13
+l1_13
+l1_14
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/19_1.18 b/tools/regression/usr.bin/sed/regress.multitest.out/19_1.18
new file mode 100644
index 0000000..3bcc601
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/19_1.18
@@ -0,0 +1,14 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/1_1.1 b/tools/regression/usr.bin/sed/regress.multitest.out/1_1.1
new file mode 100644
index 0000000..70fd43b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/1_1.1
@@ -0,0 +1,28 @@
+e1_l1_1
+e1_l1_1
+e1_l1_2
+e1_l1_2
+e1_l1_3
+e1_l1_3
+e1_l1_4
+e1_l1_4
+e1_l1_5
+e1_l1_5
+e1_l1_6
+e1_l1_6
+e1_l1_7
+e1_l1_7
+e1_l1_8
+e1_l1_8
+e1_l1_9
+e1_l1_9
+e1_l1_10
+e1_l1_10
+e1_l1_11
+e1_l1_11
+e1_l1_12
+e1_l1_12
+e1_l1_13
+e1_l1_13
+e1_l1_14
+e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/20_2.1 b/tools/regression/usr.bin/sed/regress.multitest.out/20_2.1
new file mode 100644
index 0000000..a7c92f0
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/20_2.1
@@ -0,0 +1 @@
+l1_4
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/21_2.2 b/tools/regression/usr.bin/sed/regress.multitest.out/21_2.2
new file mode 100644
index 0000000..fe925b0
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/21_2.2
@@ -0,0 +1 @@
+l2_6
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/22_2.3 b/tools/regression/usr.bin/sed/regress.multitest.out/22_2.3
new file mode 100644
index 0000000..6165ce8
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/22_2.3
@@ -0,0 +1 @@
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/23_2.4 b/tools/regression/usr.bin/sed/regress.multitest.out/23_2.4
new file mode 100644
index 0000000..1502f00
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/23_2.4
@@ -0,0 +1 @@
+l2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/24_2.5 b/tools/regression/usr.bin/sed/regress.multitest.out/24_2.5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/24_2.5
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/25_2.6 b/tools/regression/usr.bin/sed/regress.multitest.out/25_2.6
new file mode 100644
index 0000000..1502f00
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/25_2.6
@@ -0,0 +1 @@
+l2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/26_2.7 b/tools/regression/usr.bin/sed/regress.multitest.out/26_2.7
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/26_2.7
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/27_2.8 b/tools/regression/usr.bin/sed/regress.multitest.out/27_2.8
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/27_2.8
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/28_2.9 b/tools/regression/usr.bin/sed/regress.multitest.out/28_2.9
new file mode 100644
index 0000000..8e6f085
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/28_2.9
@@ -0,0 +1 @@
+l1_7
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/29_2.10 b/tools/regression/usr.bin/sed/regress.multitest.out/29_2.10
new file mode 100644
index 0000000..8e6f085
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/29_2.10
@@ -0,0 +1 @@
+l1_7
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/2_1.2 b/tools/regression/usr.bin/sed/regress.multitest.out/2_1.2
new file mode 100644
index 0000000..7af945d
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/2_1.2
@@ -0,0 +1,14 @@
+e1_l1_1
+e1_l1_2
+e1_l1_3
+e1_l1_4
+e1_l1_5
+e1_l1_6
+e1_l1_7
+e1_l1_8
+e1_l1_9
+e1_l1_10
+e1_l1_11
+e1_l1_12
+e1_l1_13
+e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/30_2.11 b/tools/regression/usr.bin/sed/regress.multitest.out/30_2.11
new file mode 100644
index 0000000..8e6f085
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/30_2.11
@@ -0,0 +1 @@
+l1_7
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/31_2.12 b/tools/regression/usr.bin/sed/regress.multitest.out/31_2.12
new file mode 100644
index 0000000..ddd4976
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/31_2.12
@@ -0,0 +1,4 @@
+l1_1
+l1_2
+l1_3
+l1_4
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/32_2.13 b/tools/regression/usr.bin/sed/regress.multitest.out/32_2.13
new file mode 100644
index 0000000..d08d35c
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/32_2.13
@@ -0,0 +1,23 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
+l2_1
+l2_2
+l2_3
+l2_4
+l2_5
+l2_6
+l2_7
+l2_8
+l2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/33_2.14 b/tools/regression/usr.bin/sed/regress.multitest.out/33_2.14
new file mode 100644
index 0000000..d08d35c
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/33_2.14
@@ -0,0 +1,23 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
+l2_1
+l2_2
+l2_3
+l2_4
+l2_5
+l2_6
+l2_7
+l2_8
+l2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/34_2.15 b/tools/regression/usr.bin/sed/regress.multitest.out/34_2.15
new file mode 100644
index 0000000..1f20a52
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/34_2.15
@@ -0,0 +1,20 @@
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
+l2_1
+l2_2
+l2_3
+l2_4
+l2_5
+l2_6
+l2_7
+l2_8
+l2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/35_2.16 b/tools/regression/usr.bin/sed/regress.multitest.out/35_2.16
new file mode 100644
index 0000000..4d8dc1e
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/35_2.16
@@ -0,0 +1,17 @@
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
+l2_1
+l2_2
+l2_3
+l2_4
+l2_5
+l2_6
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/36_2.17 b/tools/regression/usr.bin/sed/regress.multitest.out/36_2.17
new file mode 100644
index 0000000..df7978f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/36_2.17
@@ -0,0 +1,17 @@
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_14
+l2_1
+l2_2
+l2_3
+l2_4
+l2_5
+l2_6
+l2_7
+l2_8
+l2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/37_2.18 b/tools/regression/usr.bin/sed/regress.multitest.out/37_2.18
new file mode 100644
index 0000000..c4d558b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/37_2.18
@@ -0,0 +1,7 @@
+l2_3
+l2_4
+l2_5
+l2_6
+l2_7
+l2_8
+l2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/38_2.19 b/tools/regression/usr.bin/sed/regress.multitest.out/38_2.19
new file mode 100644
index 0000000..7fb81db
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/38_2.19
@@ -0,0 +1 @@
+l1_12
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/39_2.20 b/tools/regression/usr.bin/sed/regress.multitest.out/39_2.20
new file mode 100644
index 0000000..8e6f085
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/39_2.20
@@ -0,0 +1 @@
+l1_7
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/3_1.3 b/tools/regression/usr.bin/sed/regress.multitest.out/3_1.3
new file mode 100644
index 0000000..70fd43b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/3_1.3
@@ -0,0 +1,28 @@
+e1_l1_1
+e1_l1_1
+e1_l1_2
+e1_l1_2
+e1_l1_3
+e1_l1_3
+e1_l1_4
+e1_l1_4
+e1_l1_5
+e1_l1_5
+e1_l1_6
+e1_l1_6
+e1_l1_7
+e1_l1_7
+e1_l1_8
+e1_l1_8
+e1_l1_9
+e1_l1_9
+e1_l1_10
+e1_l1_10
+e1_l1_11
+e1_l1_11
+e1_l1_12
+e1_l1_12
+e1_l1_13
+e1_l1_13
+e1_l1_14
+e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/40_3.1 b/tools/regression/usr.bin/sed/regress.multitest.out/40_3.1
new file mode 100644
index 0000000..f963b03
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/40_3.1
@@ -0,0 +1,14 @@
+l1_1
+l1_2
+l1_3
+^l1T4$
+^l1T5$
+^l1T6$
+^l1T7$
+^l1T8$
+^l1T9$
+^l1T10$
+^l1T11$
+^l1T12$
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/41_3.2 b/tools/regression/usr.bin/sed/regress.multitest.out/41_3.2
new file mode 100644
index 0000000..488e94f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/41_3.2
@@ -0,0 +1,14 @@
+l1_1
+l1_2
+l1_3
+^l1_4
+^l1_5
+^l1_6$
+^l1_7$
+^l1T8$
+^l1_9$
+^l1_10$
+^l1_11
+^l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/42_3.3 b/tools/regression/usr.bin/sed/regress.multitest.out/42_3.3
new file mode 100644
index 0000000..5b15dae
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/42_3.3
@@ -0,0 +1,14 @@
+^l1T1$
+^l1T2$
+^l1T3$
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+^l1T13$
+^l1T14$
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/43_3.4 b/tools/regression/usr.bin/sed/regress.multitest.out/43_3.4
new file mode 100644
index 0000000..67f03ef
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/43_3.4
@@ -0,0 +1,14 @@
+^l1_1
+^l1_2
+^l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+^l1_13
+^l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/44_4.1 b/tools/regression/usr.bin/sed/regress.multitest.out/44_4.1
new file mode 100644
index 0000000..455093c
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/44_4.1
@@ -0,0 +1,47 @@
+before_il1_1
+after_ibefore_il1_1
+before_il1_2
+after_ibefore_il1_2
+before_il1_3
+after_ibefore_il1_3
+before_il1_4
+after_ibefore_il1_4
+before_il1_5
+after_ibefore_il1_5
+before_il1_6
+after_ibefore_il1_6
+before_il1_7
+after_ibefore_il1_7
+before_il1_8
+after_ibefore_il1_8
+before_il1_9
+after_ibefore_il1_9
+before_il1_10
+after_ibefore_il1_10
+before_il1_11
+after_ibefore_il1_11
+before_il1_12
+after_ibefore_il1_12
+before_il1_13
+after_ibefore_il1_13
+before_il1_14
+after_ibefore_il1_14
+before_il2_1
+after_ibefore_il2_1
+before_il2_2
+after_ibefore_il2_2
+before_il2_3
+after_ibefore_il2_3
+before_il2_4
+after_ibefore_il2_4
+before_il2_5
+after_ibefore_il2_5
+before_il2_6
+inserted
+after_ibefore_il2_6
+before_il2_7
+after_ibefore_il2_7
+before_il2_8
+after_ibefore_il2_8
+before_il2_9
+after_ibefore_il2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/45_4.2 b/tools/regression/usr.bin/sed/regress.multitest.out/45_4.2
new file mode 100644
index 0000000..4161c1c
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/45_4.2
@@ -0,0 +1,54 @@
+before_al1_1
+after_abefore_al1_1
+before_al1_2
+after_abefore_al1_2
+before_al1_3
+after_abefore_al1_3
+before_al1_4
+after_abefore_al1_4
+before_a5-12l1_5
+after_abefore_a5-12l1_5
+appended
+before_a5-12l1_6
+after_abefore_a5-12l1_6
+appended
+before_a5-12l1_7
+after_abefore_a5-12l1_7
+appended
+before_a5-12l1_8
+after_abefore_a5-12l1_8
+appended
+before_a5-12l1_9
+after_abefore_a5-12l1_9
+appended
+before_a5-12l1_10
+after_abefore_a5-12l1_10
+appended
+before_a5-12l1_11
+after_abefore_a5-12l1_11
+appended
+before_a5-12l1_12
+after_abefore_a5-12l1_12
+appended
+before_al1_13
+after_abefore_al1_13
+before_al1_14
+after_abefore_al1_14
+before_al2_1
+after_abefore_al2_1
+before_al2_2
+after_abefore_al2_2
+before_al2_3
+after_abefore_al2_3
+before_al2_4
+after_abefore_al2_4
+before_al2_5
+after_abefore_al2_5
+before_al2_6
+after_abefore_al2_6
+before_al2_7
+after_abefore_al2_7
+before_al2_8
+after_abefore_al2_8
+before_al2_9
+after_abefore_al2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/46_4.3 b/tools/regression/usr.bin/sed/regress.multitest.out/46_4.3
new file mode 100644
index 0000000..ccfa194
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/46_4.3
@@ -0,0 +1,56 @@
+^l1_1
+^l1_1$
+appended
+^l1_2
+^l1_2$
+appended
+^l1_3
+^l1_3$
+appended
+^l1_4
+^l1_4$
+appended
+^l1_5
+^l1_5$
+appended
+^l1_6
+^l1_6$
+appended
+^l1_7
+^l1_7$
+appended
+^l1_8
+appended
+^l1_8
+l1_9$
+^l1_10
+appended
+^l1_10
+l1_11$
+^l1_12
+^l1_12$
+appended
+^l1_13
+^l1_13$
+appended
+^l1_14
+^l1_14$
+appended
+^l2_1
+^l2_1$
+^l2_2
+^l2_2$
+^l2_3
+^l2_3$
+^l2_4
+^l2_4$
+^l2_5
+^l2_5$
+^l2_6
+^l2_6$
+^l2_7
+^l2_7$
+^l2_8
+^l2_8$
+^l2_9
+^l2_9$
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/47_4.4 b/tools/regression/usr.bin/sed/regress.multitest.out/47_4.4
new file mode 100644
index 0000000..94e9a6d
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/47_4.4
@@ -0,0 +1,14 @@
+hello
+hello
+hello
+hello
+hello
+hello
+hello
+hello
+hello
+hello
+hello
+hello
+hello
+hello
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/48_4.5 b/tools/regression/usr.bin/sed/regress.multitest.out/48_4.5
new file mode 100644
index 0000000..ce01362
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/48_4.5
@@ -0,0 +1 @@
+hello
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/49_4.6 b/tools/regression/usr.bin/sed/regress.multitest.out/49_4.6
new file mode 100644
index 0000000..ce01362
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/49_4.6
@@ -0,0 +1 @@
+hello
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/4_1.4 b/tools/regression/usr.bin/sed/regress.multitest.out/4_1.4
new file mode 100644
index 0000000..7af945d
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/4_1.4
@@ -0,0 +1,14 @@
+e1_l1_1
+e1_l1_2
+e1_l1_3
+e1_l1_4
+e1_l1_5
+e1_l1_6
+e1_l1_7
+e1_l1_8
+e1_l1_9
+e1_l1_10
+e1_l1_11
+e1_l1_12
+e1_l1_13
+e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/50_4.7 b/tools/regression/usr.bin/sed/regress.multitest.out/50_4.7
new file mode 100644
index 0000000..ce01362
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/50_4.7
@@ -0,0 +1 @@
+hello
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/51_4.8 b/tools/regression/usr.bin/sed/regress.multitest.out/51_4.8
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/51_4.8
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/52_5.1 b/tools/regression/usr.bin/sed/regress.multitest.out/52_5.1
new file mode 100644
index 0000000..ac9202e
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/52_5.1
@@ -0,0 +1,17 @@
+label2_l1_1
+label3_label2_l1_1
+label1_l1_2
+label1_l1_3
+label1_l1_4
+label1_l1_5
+label1_l1_6
+label1_l1_7
+label1_l1_8
+label1_l1_9
+label1_l1_10
+label1_l1_11
+label1_l1_12
+label2_l1_13
+label3_label2_l1_13
+label2_l1_14
+label3_label2_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/53_5.2 b/tools/regression/usr.bin/sed/regress.multitest.out/53_5.2
new file mode 100644
index 0000000..ec339f4
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/53_5.2
@@ -0,0 +1,14 @@
+tested l2_1
+tested l2_2
+tested l2_3
+tested l2_4
+tested l2_5
+tested l2_6
+tested l2_7
+tested l2_8
+tested l2_9
+tested l2_10
+tested l2_11
+tested l2_12
+tested l2_13
+tested l2_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/54_5.3 b/tools/regression/usr.bin/sed/regress.multitest.out/54_5.3
new file mode 100644
index 0000000..e1ddb54
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/54_5.3
@@ -0,0 +1,12 @@
+^l1_1
+^l1_1$
+^l1_2
+^l1_2$
+^l1_3
+^l1_3$
+^l1_4
+^l1_4$
+l1_5$
+l1_6$
+l1_7$
+l1_8$
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/55_5.4 b/tools/regression/usr.bin/sed/regress.multitest.out/55_5.4
new file mode 100644
index 0000000..a9ec85b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/55_5.4
@@ -0,0 +1,14 @@
+^l1_1$
+^l1_2$
+^l1_3$
+^l1_4$
+^l1_5$
+^l1_6$
+^l1_7$
+^l1_8$
+l1_9$
+l1_10$
+l1_11$
+l1_12$
+l1_13$
+l1_14$
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/56_5.5 b/tools/regression/usr.bin/sed/regress.multitest.out/56_5.5
new file mode 100644
index 0000000..6766fea
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/56_5.5
@@ -0,0 +1,5 @@
+^l1_1
+^l1_2
+^l1_4
+^l1_6
+^l1_8
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/57_5.6 b/tools/regression/usr.bin/sed/regress.multitest.out/57_5.6
new file mode 100644
index 0000000..7ffbba3
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/57_5.6
@@ -0,0 +1,5 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/58_5.7 b/tools/regression/usr.bin/sed/regress.multitest.out/58_5.7
new file mode 100644
index 0000000..f15f6e3
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/58_5.7
@@ -0,0 +1,6 @@
+l1_1
+l1_2
+l1_3
+l1_4
+hello
+l1_5
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/59_5.8 b/tools/regression/usr.bin/sed/regress.multitest.out/59_5.8
new file mode 100644
index 0000000..1557318
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/59_5.8
@@ -0,0 +1,14 @@
+m1_1
+m1_2
+m1_3
+m1_4
+m1_5
+m1_6
+m1_7
+m1_8
+m1_9
+m1_10
+m1_11
+m1_12
+m1_13
+m1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/5_1.4.1 b/tools/regression/usr.bin/sed/regress.multitest.out/5_1.4.1
new file mode 100644
index 0000000..3bcc601
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/5_1.4.1
@@ -0,0 +1,14 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/60_6.1 b/tools/regression/usr.bin/sed/regress.multitest.out/60_6.1
new file mode 100644
index 0000000..78db2a5
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/60_6.1
@@ -0,0 +1,14 @@
+changed
+changed
+changed
+changed
+changed
+changed
+changed
+changed
+changed
+changed
+changed
+changed
+changed
+changed
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/61_6.2 b/tools/regression/usr.bin/sed/regress.multitest.out/61_6.2
new file mode 100644
index 0000000..77e5cc0
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/61_6.2
@@ -0,0 +1,13 @@
+l1_1
+l1_2
+l1_3
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/62_6.3 b/tools/regression/usr.bin/sed/regress.multitest.out/62_6.3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/62_6.3
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/63_6.4 b/tools/regression/usr.bin/sed/regress.multitest.out/63_6.4
new file mode 100644
index 0000000..e9169dc
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/63_6.4
@@ -0,0 +1,20 @@
+l1_1
+l1_2
+l1_3
+l1_2
+l1_3
+l1_5
+l1_2
+l1_3
+l1_2
+l1_3
+l1_6
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/64_6.5 b/tools/regression/usr.bin/sed/regress.multitest.out/64_6.5
new file mode 100644
index 0000000..3bcc601
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/64_6.5
@@ -0,0 +1,14 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/65_6.6 b/tools/regression/usr.bin/sed/regress.multitest.out/65_6.6
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/65_6.6
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/66_7.1 b/tools/regression/usr.bin/sed/regress.multitest.out/66_7.1
new file mode 100644
index 0000000..586cac7
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/66_7.1
@@ -0,0 +1,15 @@
+\001\002\003\004\005\006\a\b\t$
+\v\f\r\016\017\020\021\022\023\024\025\026\027\030\031\032\
+\033\034\035\036\037 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF\
+GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\
+\177\200\201\202\203\204\205\206\207\210\211\212\213\214\
+\215\216\217\220\221\222\223\224\225\226\227\230\231\232\
+\233\234\235\236\237\240\241\242\243\244\245\246\247\250\
+\251\252\253\254\255\256\257\260\261\262\263\264\265\266\
+\267\270\271\272\273\274\275\276\277\300\301\302\303\304\
+\305\306\307\310\311\312\313\314\315\316\317\320\321\322\
+\323\324\325\326\327\330\331\332\333\334\335\336\337\340\
+\341\342\343\344\345\346\347\350\351\352\353\354\355\356\
+\357\360\361\362\363\364\365\366\367\370\371\372\373\374\
+\375\376\377$
+$
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/67_7.2 b/tools/regression/usr.bin/sed/regress.multitest.out/67_7.2
new file mode 100644
index 0000000..cb8d266
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/67_7.2
@@ -0,0 +1,32 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
+15
+l2_1
+16
+l2_2
+17
+l2_3
+18
+l2_4
+19
+l2_5
+20
+l2_6
+21
+l2_7
+22
+l2_8
+23
+l2_9
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/68_7.3 b/tools/regression/usr.bin/sed/regress.multitest.out/68_7.3
new file mode 100644
index 0000000..c742250
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/68_7.3
@@ -0,0 +1,24 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/69_7.4 b/tools/regression/usr.bin/sed/regress.multitest.out/69_7.4
new file mode 100644
index 0000000..19a9461
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/69_7.4
@@ -0,0 +1,23 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l2_1
+l2_2
+l2_3
+l2_4
+l2_5
+l2_6
+l2_7
+l2_8
+l2_9
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/6_1.5 b/tools/regression/usr.bin/sed/regress.multitest.out/6_1.5
new file mode 100644
index 0000000..dfd85f7
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/6_1.5
@@ -0,0 +1,28 @@
+s1_l1_1
+s1_l1_1
+s1_l1_2
+s1_l1_2
+s1_l1_3
+s1_l1_3
+s1_l1_4
+s1_l1_4
+s1_l1_5
+s1_l1_5
+s1_l1_6
+s1_l1_6
+s1_l1_7
+s1_l1_7
+s1_l1_8
+s1_l1_8
+s1_l1_9
+s1_l1_9
+s1_l1_10
+s1_l1_10
+s1_l1_11
+s1_l1_11
+s1_l1_12
+s1_l1_12
+s1_l1_13
+s1_l1_13
+s1_l1_14
+s1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/70_7.5 b/tools/regression/usr.bin/sed/regress.multitest.out/70_7.5
new file mode 100644
index 0000000..3bcc601
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/70_7.5
@@ -0,0 +1,14 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/71_7.6 b/tools/regression/usr.bin/sed/regress.multitest.out/71_7.6
new file mode 100644
index 0000000..3bcc601
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/71_7.6
@@ -0,0 +1,14 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/72_7.7 b/tools/regression/usr.bin/sed/regress.multitest.out/72_7.7
new file mode 100644
index 0000000..7baa931
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/72_7.7
@@ -0,0 +1,2814 @@
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+Al1_1
+Al1_2
+Al1_3
+Al1_4
+Al1_5
+Al1_6
+Al1_7
+Al1_8
+Al1_9
+Al1_10
+Al1_11
+Al1_12
+Al1_13
+Al1_14
+AaniaamaaliiaalaaaAl1_1
+AaniaamaaliiaalaaaAl1_2
+AaniaamaaliiaalaaaAl1_3
+AaniaamaaliiaalaaaAl1_4
+AaniaamaaliiaalaaaAl1_5
+AaniaamaaliiaalaaaAl1_6
+AaniaamaaliiaalaaaAl1_7
+AaniaamaaliiaalaaaAl1_8
+AaniaamaaliiaalaaaAl1_9
+AaniaamaaliiaalaaaAl1_10
+AaniaamaaliiaalaaaAl1_11
+AaniaamaaliiaalaaaAl1_12
+AaniaamaaliiaalaaaAl1_13
+AaniaamaaliiaalaaaAl1_14
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+AberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aAl1_1
+aAl1_2
+aAl1_3
+aAl1_4
+aAl1_5
+aAl1_6
+aAl1_7
+aAl1_8
+aAl1_9
+aAl1_10
+aAl1_11
+aAl1_12
+aAl1_13
+aAl1_14
+aaaAl1_1
+aaaAl1_2
+aaaAl1_3
+aaaAl1_4
+aaaAl1_5
+aaaAl1_6
+aaaAl1_7
+aaaAl1_8
+aaaAl1_9
+aaaAl1_10
+aaaAl1_11
+aaaAl1_12
+aaaAl1_13
+aaaAl1_14
+aalaaaAl1_1
+aalaaaAl1_2
+aalaaaAl1_3
+aalaaaAl1_4
+aalaaaAl1_5
+aalaaaAl1_6
+aalaaaAl1_7
+aalaaaAl1_8
+aalaaaAl1_9
+aalaaaAl1_10
+aalaaaAl1_11
+aalaaaAl1_12
+aalaaaAl1_13
+aalaaaAl1_14
+aaliiaalaaaAl1_1
+aaliiaalaaaAl1_2
+aaliiaalaaaAl1_3
+aaliiaalaaaAl1_4
+aaliiaalaaaAl1_5
+aaliiaalaaaAl1_6
+aaliiaalaaaAl1_7
+aaliiaalaaaAl1_8
+aaliiaalaaaAl1_9
+aaliiaalaaaAl1_10
+aaliiaalaaaAl1_11
+aaliiaalaaaAl1_12
+aaliiaalaaaAl1_13
+aaliiaalaaaAl1_14
+aamaaliiaalaaaAl1_1
+aamaaliiaalaaaAl1_2
+aamaaliiaalaaaAl1_3
+aamaaliiaalaaaAl1_4
+aamaaliiaalaaaAl1_5
+aamaaliiaalaaaAl1_6
+aamaaliiaalaaaAl1_7
+aamaaliiaalaaaAl1_8
+aamaaliiaalaaaAl1_9
+aamaaliiaalaaaAl1_10
+aamaaliiaalaaaAl1_11
+aamaaliiaalaaaAl1_12
+aamaaliiaalaaaAl1_13
+aamaaliiaalaaaAl1_14
+aardvarkAaniaamaaliiaalaaaAl1_1
+aardvarkAaniaamaaliiaalaaaAl1_2
+aardvarkAaniaamaaliiaalaaaAl1_3
+aardvarkAaniaamaaliiaalaaaAl1_4
+aardvarkAaniaamaaliiaalaaaAl1_5
+aardvarkAaniaamaaliiaalaaaAl1_6
+aardvarkAaniaamaaliiaalaaaAl1_7
+aardvarkAaniaamaaliiaalaaaAl1_8
+aardvarkAaniaamaaliiaalaaaAl1_9
+aardvarkAaniaamaaliiaalaaaAl1_10
+aardvarkAaniaamaaliiaalaaaAl1_11
+aardvarkAaniaamaaliiaalaaaAl1_12
+aardvarkAaniaamaaliiaalaaaAl1_13
+aardvarkAaniaamaaliiaalaaaAl1_14
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+aberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_1
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_2
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_3
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_4
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_5
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_6
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_7
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_8
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_9
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_10
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_11
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_12
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_13
+abetmentabetaberuncatoraberroscopeaberrometeraberratoraberrationalaberrationaberrateaberrantaberrancyaberranceAberiaAberdonianaberdevineAberdeenabepithymiaabentericAbencerragesabeltreeAbelonianabelmoskAbelmoschusabeliteAbeliteAbeliceaAbelianAbeliaabeleAbelabeighabedabecedaryabecedariumabecedarianabearanceabearabeamAbeabductorabductionabductabducentabducensabduceabdominovesicalabdominovaginalabdominousabdominothoracicabdominoscopyabdominoscopeabdominoposteriorabdominohysterotomyabdominohysterectomyabdominogenitalabdominocysticabdominocentesisabdominocardiacabdominoanteriorabdominallyabdominalianAbdominalesabdominalabdomenabditoryabditiveAbdielabdicatorabdicativeabdicationabdicateabdicantabdicableabdestAbderiteAbderianabdatabdalabcoulombAbbyabbreviatureabbreviatoryabbreviatorabbreviationabbreviatelyabbreviateabbotshipabbotnulliusabbotcyabbotAbbieabbeystedeabbeyabbessabbaticalabbatialAbbassideabbassiabbasiabbasAbbadideabbacyabbacomesAbbaabbabazeabaxileabaxialabaveabatureAbatuaabattoirabatorabatonabatisedabatisabaterabatementabateabatableabastardizeAbassinabaskabasicabasiaabashmentabashlesslyabashlessabashednessabashedlyabashedabashAbasgiabaserabasementabasednessabasedlyabasedabaseabasabarticulationabarticularabarthrosisAbarisAbaramboabaptistonAbantesAbanicabandonmentabandonerabandoneeabandonedlyabandonedabandonableabandonabampereAbamaabaloneabalienationabalienateabaissedabaiserabaisanceabaftabaffAbaditeabacusabaculusabactorabactionabactinallyabactinalabackabacistabaciscusabacinationabacinateabacayabacateabacaabacAbabuaAbabdehabaAbAaruAaroniticAaroniteAaronicalAaronicAaronaardwolfaardvarkAaniaamaaliiaalaaaAl1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/73_7.8 b/tools/regression/usr.bin/sed/regress.multitest.out/73_7.8
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/73_7.8
@@ -0,0 +1 @@
+
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/74_8.1 b/tools/regression/usr.bin/sed/regress.multitest.out/74_8.1
new file mode 100644
index 0000000..dcf124b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/74_8.1
@@ -0,0 +1,14 @@
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXXX
+XXXXX
+XXXXX
+XXXXX
+XXXXX
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/75_8.2 b/tools/regression/usr.bin/sed/regress.multitest.out/75_8.2
new file mode 100644
index 0000000..dcf124b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/75_8.2
@@ -0,0 +1,14 @@
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXXX
+XXXXX
+XXXXX
+XXXXX
+XXXXX
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/76_8.3 b/tools/regression/usr.bin/sed/regress.multitest.out/76_8.3
new file mode 100644
index 0000000..dcf124b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/76_8.3
@@ -0,0 +1,14 @@
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXX
+XXXXX
+XXXXX
+XXXXX
+XXXXX
+XXXXX
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/77_8.4 b/tools/regression/usr.bin/sed/regress.multitest.out/77_8.4
new file mode 100644
index 0000000..3bcc601
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/77_8.4
@@ -0,0 +1,14 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/78_8.5 b/tools/regression/usr.bin/sed/regress.multitest.out/78_8.5
new file mode 100644
index 0000000..833e1ba
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/78_8.5
@@ -0,0 +1,14 @@
+l1X1
+l1X2
+l1X3
+l1X4
+l1X5
+l1X6
+l1X7
+l1X8
+l1X9
+l1X10
+l1X11
+l1X12
+l1X13
+l1X14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/79_8.6 b/tools/regression/usr.bin/sed/regress.multitest.out/79_8.6
new file mode 100644
index 0000000..47c08ae
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/79_8.6
@@ -0,0 +1,14 @@
+(l)(1)(_)(1)
+(l)(1)(_)(2)
+(l)(1)(_)(3)
+(l)(1)(_)(4)
+(l)(1)(_)(5)
+(l)(1)(_)(6)
+(l)(1)(_)(7)
+(l)(1)(_)(8)
+(l)(1)(_)(9)
+(l)(1)(_)(1)(0)
+(l)(1)(_)(1)(1)
+(l)(1)(_)(1)(2)
+(l)(1)(_)(1)(3)
+(l)(1)(_)(1)(4)
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/7_1.6 b/tools/regression/usr.bin/sed/regress.multitest.out/7_1.6
new file mode 100644
index 0000000..dfd85f7
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/7_1.6
@@ -0,0 +1,28 @@
+s1_l1_1
+s1_l1_1
+s1_l1_2
+s1_l1_2
+s1_l1_3
+s1_l1_3
+s1_l1_4
+s1_l1_4
+s1_l1_5
+s1_l1_5
+s1_l1_6
+s1_l1_6
+s1_l1_7
+s1_l1_7
+s1_l1_8
+s1_l1_8
+s1_l1_9
+s1_l1_9
+s1_l1_10
+s1_l1_10
+s1_l1_11
+s1_l1_11
+s1_l1_12
+s1_l1_12
+s1_l1_13
+s1_l1_13
+s1_l1_14
+s1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/80_8.7 b/tools/regression/usr.bin/sed/regress.multitest.out/80_8.7
new file mode 100644
index 0000000..0ff0b9e
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/80_8.7
@@ -0,0 +1,14 @@
+(&)(&)(&)(&)
+(&)(&)(&)(&)
+(&)(&)(&)(&)
+(&)(&)(&)(&)
+(&)(&)(&)(&)
+(&)(&)(&)(&)
+(&)(&)(&)(&)
+(&)(&)(&)(&)
+(&)(&)(&)(&)
+(&)(&)(&)(&)(&)
+(&)(&)(&)(&)(&)
+(&)(&)(&)(&)(&)
+(&)(&)(&)(&)(&)
+(&)(&)(&)(&)(&)
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/81_8.8 b/tools/regression/usr.bin/sed/regress.multitest.out/81_8.8
new file mode 100644
index 0000000..08bbf8c
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/81_8.8
@@ -0,0 +1,14 @@
+x_x1xl1
+x_x1xl2
+x_x1xl3
+x_x1xl4
+x_x1xl5
+x_x1xl6
+x_x1xl7
+x_x1xl8
+x_x1xl9
+x_x1xl10
+x_x1xl11
+x_x1xl12
+x_x1xl13
+x_x1xl14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/82_8.9 b/tools/regression/usr.bin/sed/regress.multitest.out/82_8.9
new file mode 100644
index 0000000..e0cd8b5
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/82_8.9
@@ -0,0 +1,42 @@
+l1u0
+u1
+u21
+l1u0
+u1
+u22
+l1u0
+u1
+u23
+l1u0
+u1
+u24
+l1u0
+u1
+u25
+l1u0
+u1
+u26
+l1u0
+u1
+u27
+l1u0
+u1
+u28
+l1u0
+u1
+u29
+l1u0
+u1
+u210
+l1u0
+u1
+u211
+l1u0
+u1
+u212
+l1u0
+u1
+u213
+l1u0
+u1
+u214
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/83_8.10 b/tools/regression/usr.bin/sed/regress.multitest.out/83_8.10
new file mode 100644
index 0000000..86f75c15
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/83_8.10
@@ -0,0 +1,14 @@
+l1_X
+l1_X
+l1_X
+l1_X
+l1_X
+l1_X
+l1_X
+l1_X
+l1_X
+l1_X0
+l1_X1
+l1_X2
+l1_X3
+l1_X4
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/84_8.11 b/tools/regression/usr.bin/sed/regress.multitest.out/84_8.11
new file mode 100644
index 0000000..70a0f11
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/84_8.11
@@ -0,0 +1,28 @@
+lX_1
+lX_2
+lX_3
+lX_4
+lX_5
+lX_6
+lX_7
+lX_8
+lX_9
+lX_10
+lX_11
+lX_12
+lX_13
+lX_14
+lX_1
+lX_2
+lX_3
+lX_4
+lX_5
+lX_6
+lX_7
+lX_8
+lX_9
+lX_10
+lX_11
+lX_12
+lX_13
+lX_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/85_8.12 b/tools/regression/usr.bin/sed/regress.multitest.out/85_8.12
new file mode 100644
index 0000000..ded4e98
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/85_8.12
@@ -0,0 +1,14 @@
+lX_X
+lX_X
+lX_X
+lX_4
+lX_5
+lX_6
+lX_7
+lX_8
+lX_9
+lX_X0
+lX_XX
+lX_XX
+lX_XX
+lX_X4
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/86_8.13 b/tools/regression/usr.bin/sed/regress.multitest.out/86_8.13
new file mode 100644
index 0000000..48646d1
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/86_8.13
@@ -0,0 +1,14 @@
+l8_8
+l8_7
+l8_6
+l8_5
+l8_4
+l8_3
+l8_2
+l8_1
+l8_0
+l8_89
+l8_88
+l8_87
+l8_86
+l8_85
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/87_8.14 b/tools/regression/usr.bin/sed/regress.multitest.out/87_8.14
new file mode 100644
index 0000000..48646d1
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/87_8.14
@@ -0,0 +1,14 @@
+l8_8
+l8_7
+l8_6
+l8_5
+l8_4
+l8_3
+l8_2
+l8_1
+l8_0
+l8_89
+l8_88
+l8_87
+l8_86
+l8_85
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/88_8.15 b/tools/regression/usr.bin/sed/regress.multitest.out/88_8.15
new file mode 100644
index 0000000..f414bb5
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/88_8.15
@@ -0,0 +1,13 @@
+l1_1Xl1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/89_8.16 b/tools/regression/usr.bin/sed/regress.multitest.out/89_8.16
new file mode 100644
index 0000000..230cc08
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/89_8.16
@@ -0,0 +1,7 @@
+eeefff
+Xeefff
+XYefff
+XYeYff
+XYeYYf
+XYeYYY
+XYeYYY
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/8_1.7 b/tools/regression/usr.bin/sed/regress.multitest.out/8_1.7
new file mode 100644
index 0000000..70fd43b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/8_1.7
@@ -0,0 +1,28 @@
+e1_l1_1
+e1_l1_1
+e1_l1_2
+e1_l1_2
+e1_l1_3
+e1_l1_3
+e1_l1_4
+e1_l1_4
+e1_l1_5
+e1_l1_5
+e1_l1_6
+e1_l1_6
+e1_l1_7
+e1_l1_7
+e1_l1_8
+e1_l1_8
+e1_l1_9
+e1_l1_9
+e1_l1_10
+e1_l1_10
+e1_l1_11
+e1_l1_11
+e1_l1_12
+e1_l1_12
+e1_l1_13
+e1_l1_13
+e1_l1_14
+e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/90_8.17 b/tools/regression/usr.bin/sed/regress.multitest.out/90_8.17
new file mode 100644
index 0000000..3bcc601
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/90_8.17
@@ -0,0 +1,14 @@
+l1_1
+l1_2
+l1_3
+l1_4
+l1_5
+l1_6
+l1_7
+l1_8
+l1_9
+l1_10
+l1_11
+l1_12
+l1_13
+l1_14
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/91_9.1 b/tools/regression/usr.bin/sed/regress.multitest.out/91_9.1
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/91_9.1
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/92_9.2 b/tools/regression/usr.bin/sed/regress.multitest.out/92_9.2
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/92_9.2
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/93_9.3 b/tools/regression/usr.bin/sed/regress.multitest.out/93_9.3
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/93_9.3
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/94_9.4 b/tools/regression/usr.bin/sed/regress.multitest.out/94_9.4
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/94_9.4
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/95_9.5 b/tools/regression/usr.bin/sed/regress.multitest.out/95_9.5
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/95_9.5
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/96_9.6 b/tools/regression/usr.bin/sed/regress.multitest.out/96_9.6
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/96_9.6
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/97_9.7 b/tools/regression/usr.bin/sed/regress.multitest.out/97_9.7
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/97_9.7
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/98_9.8 b/tools/regression/usr.bin/sed/regress.multitest.out/98_9.8
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/98_9.8
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/99_9.9 b/tools/regression/usr.bin/sed/regress.multitest.out/99_9.9
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/99_9.9
@@ -0,0 +1 @@
+1
diff --git a/tools/regression/usr.bin/sed/regress.multitest.out/9_1.8 b/tools/regression/usr.bin/sed/regress.multitest.out/9_1.8
new file mode 100644
index 0000000..70fd43b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.multitest.out/9_1.8
@@ -0,0 +1,28 @@
+e1_l1_1
+e1_l1_1
+e1_l1_2
+e1_l1_2
+e1_l1_3
+e1_l1_3
+e1_l1_4
+e1_l1_4
+e1_l1_5
+e1_l1_5
+e1_l1_6
+e1_l1_6
+e1_l1_7
+e1_l1_7
+e1_l1_8
+e1_l1_8
+e1_l1_9
+e1_l1_9
+e1_l1_10
+e1_l1_10
+e1_l1_11
+e1_l1_11
+e1_l1_12
+e1_l1_12
+e1_l1_13
+e1_l1_13
+e1_l1_14
+e1_l1_14
diff --git a/tools/regression/usr.bin/sed/regress.psl.out b/tools/regression/usr.bin/sed/regress.psl.out
new file mode 100644
index 0000000..8b38f4d
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.psl.out
@@ -0,0 +1,4 @@
+
+
+
+of sed(1)
diff --git a/tools/regression/usr.bin/sed/regress.s3.out b/tools/regression/usr.bin/sed/regress.s3.out
new file mode 100644
index 0000000..68dfa9b
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.s3.out
@@ -0,0 +1 @@
+fo,o
diff --git a/tools/regression/usr.bin/sed/regress.s4.out b/tools/regression/usr.bin/sed/regress.s4.out
new file mode 100644
index 0000000..03914ba
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.s4.out
@@ -0,0 +1 @@
+foo,
diff --git a/tools/regression/usr.bin/sed/regress.s5.out b/tools/regression/usr.bin/sed/regress.s5.out
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.s5.out
@@ -0,0 +1 @@
+foo
diff --git a/tools/regression/usr.bin/sed/regress.sg.out b/tools/regression/usr.bin/sed/regress.sg.out
new file mode 100644
index 0000000..7b24f2c
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.sg.out
@@ -0,0 +1 @@
+,f,o,o,
diff --git a/tools/regression/usr.bin/sed/regress.sh b/tools/regression/usr.bin/sed/regress.sh
new file mode 100644
index 0000000..520abd5
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.sh
@@ -0,0 +1,69 @@
+# $FreeBSD$
+
+REGRESSION_START($1)
+
+echo '1..21'
+
+REGRESSION_TEST(`G', `sed G < regress.in')
+REGRESSION_TEST(`P', `sed P < regress.in')
+REGRESSION_TEST(`psl', `sed \$!g\;P\;D < regress.in')
+REGRESSION_TEST(`bcb', `sed s/X/$(jot -n -bx -s "" 2043)\\\\zz/ < regress.in')
+REGRESSION_TEST(`y', `echo -n foo | sed y/o/O/')
+REGRESSION_TEST(`sg', `echo foo | sed s/,*/,/g')
+REGRESSION_TEST(`s3', `echo foo | sed s/,*/,/3')
+REGRESSION_TEST(`s4', `echo foo | sed s/,*/,/4')
+REGRESSION_TEST(`s5', `echo foo | sed s/,*/,/5')
+REGRESSION_TEST(`c0', `sed ''`c\
+foo
+''`< regress.in')
+REGRESSION_TEST(`c1', `sed ''`4,$c\
+foo
+''`< regress.in')
+REGRESSION_TEST(`c2', `sed ''`3,9c\
+foo
+''`< regress.in')
+REGRESSION_TEST(`c3', `sed ''`3,/no such string/c\
+foo
+''`< regress.in')
+REGRESSION_TEST(`b2a', `sed ''`2,3b
+1,2d''` < regress.in')
+
+`
+inplace_test()
+{
+ expr="$1"
+ rc=0
+ ns=$(jot 5)
+ ins= outs= _ins=
+ for n in $ns; do
+ jot -w "l${n}_%d" 9 | tee lines.in.$n lines._in.$n | \
+ sed "$expr" > lines.out.$n
+ ins="$ins lines.in.$n"
+ outs="$outs lines.out.$n"
+ _ins="$_ins lines._in.$n"
+ done
+ sed "$expr" $_ins > lines.out
+
+ sed -i "" "$expr" $ins
+ sed -I "" "$expr" $_ins
+
+ for n in $ns; do
+ diff -u lines.out.$n lines.in.$n || rc=1
+ done
+ cat $_ins | diff -u lines.out - || rc=1
+ rm -f $ins $outs $_ins lines.out
+
+ return $rc
+}
+'
+
+REGRESSION_TEST_FREEFORM(`inplace1', `inplace_test 3,6d')
+REGRESSION_TEST_FREEFORM(`inplace2', `inplace_test 8,30d')
+REGRESSION_TEST_FREEFORM(`inplace3', `inplace_test 20,99d')
+REGRESSION_TEST_FREEFORM(`inplace4', `inplace_test "{;{;8,30d;};}"')
+REGRESSION_TEST_FREEFORM(`inplace5', `inplace_test "3x;6G"')
+
+REGRESSION_TEST(`hanoi', `echo ":abcd: : :" | sed -f hanoi.sed')
+REGRESSION_TEST(`math', `echo "4+7*3+2^7/3" | sed -f math.sed')
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/sed/regress.t b/tools/regression/usr.bin/sed/regress.t
new file mode 100644
index 0000000..a82aacd
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+m4 ../regress.m4 regress.sh | sh
diff --git a/tools/regression/usr.bin/sed/regress.y.out b/tools/regression/usr.bin/sed/regress.y.out
new file mode 100644
index 0000000..829a681
--- /dev/null
+++ b/tools/regression/usr.bin/sed/regress.y.out
@@ -0,0 +1 @@
+fOO
diff --git a/tools/regression/usr.bin/uudecode/Makefile b/tools/regression/usr.bin/uudecode/Makefile
new file mode 100644
index 0000000..b937d41
--- /dev/null
+++ b/tools/regression/usr.bin/uudecode/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}
diff --git a/tools/regression/usr.bin/uudecode/regress.base64.in b/tools/regression/usr.bin/uudecode/regress.base64.in
new file mode 100644
index 0000000..3a8bfc2
--- /dev/null
+++ b/tools/regression/usr.bin/uudecode/regress.base64.in
@@ -0,0 +1,88 @@
+begin-base64 644 regress.out
+dB745nc7bs6q4W24dCU/WprFX3UkvTwO6wlHiV+L4U+QEH1p/P9WjgFZ0MSGI2lE
+TCIH+3j4oqf3JJA/uvQ2WnWzCjFXG17cZpBq8UQGMh/e8QLyahMOTrrHP9Cf2ZE9
+WtybokTG8E2Ft0QrfiTsIpcUPMd7VDRvCQGLD+t6bqJkPJKaGmXXCwLwLz2WpAOX
+RW+d4UhnCnB0aBs7IByd6beMYwQxIcM4XvyAnG1z3XK9gCwvIwzI6wYYzXCIAo/K
+pP90oNA6ijFYYNK3s/uttytzC5QfKn6gaVerwYcb1QQHqyrxoryOrjwgwgazSfwL
+hDK1fLejnpTXL1Uh2j9E+pM0WSftA0wX1tdyKxy7kUarWzEACH8htTSd3NDamR/2
+T66xNHPYZhW31cjeNTX0czIfpRWBbBQI3rc5yhWZlGA0j8X8zQR4puaGpQ6QNnbB
+QkSU4Ak+pveRT8JuFbJVQI6WHemB7H9LV5CSYVCoZ2iOFA/Z8PSM473XXjqBk/M1
+Zz4irDw8V1tBp519qNgXFt52fdrkbzJCa+71pfAuP2LsytpAd2LUJwhgiV7uj6cx
+4DjEfdd/QYdcJGDm435wfsniPoPnrghEJdqfgWIvaFNpuoQ9ByrznWacs50AQFxy
+ZpfAaLJnGNiPehTOosTT6dPOKp8x2ms6mdkr2neZ0I0leoNHxCBKvgUxC0uFieo6
+GLpussFEB8QeCsy1mjnXDI1qsC2Sp34PZTvR5apH29FB1eIeAPFZMkFxO2TTs0Y4
+q3yKDcPGHaAdPy8J64UpyBlO3rbcLyqEbKcuSHHd69iT/5mD4arbyYHMY6S7S7QP
+DHpH1x8Woo5xMo0MVkmBGbKc5Sy4J37T8xjj4h0pcKvEdCSanJ2A1E2jHzpfbe8u
+/NSxpB49+JGYGJ2nsgpsKzwTXabgKDZPydqcAIpNXnAdsQBNskmzBYb8959xCzws
+ybQ7+0g4a0DYyLDcnW2NH/OCYHvkOgyM72FQJAXGg61GnZZiAjSlrqsPX2NVUtXi
+vRrueFSG5rYnYJvO2OfhwgEfxTY8b7x8AFQntBvaKqG5rWC+a2d+4Xj0B2ODy+/M
+5Hppj0dNwpLPKHa8UH6IDd+m0Aql5u5oCbh+WIDovGtN2BpkyCq00M/kKErTbTT+
+qfuWSDow0ZjLeFdSErUtdi1tKhDh5oy5Ev+ShLywKPm4/NfJ3CLhbZSvhOWWxwzf
+KEgMCnHNd8uc3JIDNM7c3Dm5w0QrD0AObOUSBF8iouNBjMvdUviIBVFPeVkZ3xYs
+TciSRJm/fB5QNhrcYRMbZJ5iOVHuuOxFw+zPoEIjVBPO1wXZgsSwgFED20bKLcOv
+SnWGM3IyNZVKqdo3a4oh4H4Lv/y6rMrtSTr7kQJlwEvU6WiyvtQob/fMdHWIbc/W
+RPR47l6JDz4V3AUqPcF3Jy6RaNUKRvFi+7cOWYBKbNFRmE/jA6dyUuVkCYIMDuhu
+I7iQL0u4l//xbdGb9RWtf8WHs/N5nmWi1TLTPbaDz8GBPOMOecpeIfqDVoPqaheq
+GT4fJj3sVBhq6zayVfNpueaEdHb/XTGm9NHS4xsgpbfL/sJw6IVJj3/dgb0RfX90
+ZUgfDvwURsTNvxAVzKuuuH6wrE8AGOpBLgomMZ5UZcgWkeRNjTqcelCsl3JhBIuU
+mJMbYI2SMv/CK+nkIYcIE7zHRaCyF8ngNYosop/chz1o1gTP2Di6NTq4a/SX0h1z
+7fykkKt2pLJvSOA8nccRIUrix5/GTQwhJxMaoR5WQUDVUPHx0c8xRNTTI24bGeik
+G4qKq74bpmZvbZrnsSjQJyLiQiPtraGR8YiI2JwGZmHbama9DPjOKV3bBWT6LgR2
+LEEI0G7BZiSGP4lniTkpOR/FUgp8WmblvhOeZY+KDTamifrq0NhjYIUYWGbZEOUi
+6ImSbiVH/gm4tk+kyAT1uSuK4lTUCWK7XO5I6WLCY2g4v7nYTDNUv/nbJLzai1GQ
+PLz3p0biVq3QwkIf+rZSsTirEIHMTeAxjdfWICDIcPSsxRZgvurgnIAodzIR9RkA
+nsoe4cLvh9SxDNrmlyWDsczkUsc9eG9rr5HH73KOr6wx2CUFug/naqnDBSzEI3H+
+cz12m9X8ATzpH0BT8cFvDE/KKiou+qWWtgLWTwnRoRBmBZVgOHCmQghz5bVgzUyg
+xxQFnYCTD9D5S3d2ndwuHJL3IesR/a+Oq5M4ORktsLMaOGJ7x3obRM6gEtuwpJ1E
+wxfGr/cYrc/QsBFoQfL9LgrcvHLgmE6mazXdF9NfBWiPZhTjFurcB0wD3PqlCrhc
+vsVP9cugGxA1pQ96MywYL2G0yyM1GrRIbiWG4y7y82+0mQSL9xG6G0StzkfWp5rr
+L8psGo/CFPr/8CXz+6tP/pNUp40NqcMVlOicMozUEHalgUe+581gu0GUI+IritwO
+SPM2hc+woGvFQ6WvY3S77fT7gkpnVuRjiSBlvSkV+2Iujs6++ErDKcIjD9j88StJ
+8xySXDZr9vIDLkT+YZIxg+v/CcP4C0tSbwAQNjoS9kpbMQK4YucSAuXIzIZngJHz
+38iU+2I+mzhPKChNi5/MxP0TjK63RqjKsIuJC9OD3c84n7TGXnvC1QqDF4TKYR2z
+Es7UjlyQVOD3HrtixAJP8ubmUQOrbIY2imR9xqUf2SWl8sCYaM6b9E00Wnnj0x2x
+pfZKE+IvarSRiTRgNBp2S7K1u9NTtj+9A67xWPwpBCPcIsyDP4CItCzMoybyqbn3
+rM3RSiygpIj901FlNab/mUi+borZDvXZgcOlhZjUJnhUjiEhuMfpOxYG//hkj/dW
+d3Dg9gaLVriLVZOfl5wUZT1d8W6rN3RQ+jT42pm2hLhE4picD5GEOYOcTf4rolSx
+2IlgK4w4fb77Iqk35/7kC203b9OFzgzIN2MMfY1C50MRJQT5B7qmKva33MjEaPzb
+IxipHCd2wAMzTJHMCShK1qiQ60aki8suOO6RWDiDAdnpzzjnDFhMyL+if5pBgZct
+nfvKvvsxAEWlyOZHcwXBu/v+2Gg5cWFr8e5GtvxmQzK0CamIba1xl5UTiZDeb6bM
+0uKZewkY1okt5lYGVYDL/vdhH2FePzSHB42RbcetO/3J113wvGjPVWz0F5hgoO+H
+T0Rq31vpZ47oK83UvOdDzRTyudiMKyf3VCVEzhqunT/QfyPp5Q7UgSOu0fcY/iap
+wxwUtqeBLUfiDo4vHSeswfAb3b8dcPPpYdjLKU80trpChkV37UyXY0wVFSiAiVOe
+WgWSGa0ABkxF/pNr/OztK1Ms2omJxBulK/FhXHtrog6xFW/QcPcGM0TXILUHJ8Gp
+XTckydbsTCW7Itv59MrY5G/3ps62AOJmcojjQ3kNsJ2UA64/u06RtK8GaP8q3X1z
+eFmikqD+jEIQlpnx1oy/aSOc0P7U9DtWe5MrloS2hHovHkad/se3GiZkgmfFRfqr
+cC+6giz4cjwTj/yEjpto3VOXnXcPycmuXFPjUlDkLBI6RaegecWd+OaQhCe0iut+
+g64p+e6j2wNaDXa64XgU6HEaXwTgaHENJCQ3GNDl79k1umU0efn5PeFJiNDdg1UB
+foaob/WFuE+FT2Ns6rmLocAG9XeXNX8U2l3eIleCQHzkhfXluFFgLQnqFpPGay3W
+liEQrZ1/J2o5yx2YE/OJMi3bvnP3JB1mdMPbgd5ulrwcbCOCe0t/qjTxLQzunP5A
++S7uaweW4iBuDjGiSGPIDH7CPpYQRl+JAj1TYdP1rQ6LpG57cr+NsbyODFEN+DSu
+yOPiu0z5BmMqb1SQcZ3v2MWyYg+n3Lqai+CX96c0lpL8U2SG7ARnkbmMrQVzD5dw
+KxnZuk4yvkrSAX0y4kN7mpWuuMDKw/h5NbCXUM1OsgjZ3NW8gsj2FYt3f7RSgOeX
+/lpLuakHMlYgYDyzXnWL8VuwG7gEN/nJLoym7w2OhTFF/l7xilkflZJ3rcGvxbi9
+gJOsuCKz2oI1ujxJHR5fIX0HSkv7R4464jiK+GUNnbe7QmbBWLoo8Y524u70j5QJ
+sd9ZLcTkwAJdW/u/qUXOjbThd8TLsuwDSTMeQj210Lmq3eYy5Np8GRjxQkOXpp0J
+fkEHrkHb5+s1I9v2AhAxQ6RUOuvORLuEoid4RkpFM1kwTV1vQplg7VmLvPjpE1JZ
+3AbAvKdeqsPsJJVwU+q7Jbw3dVa8M0ZtqS4FCGk1C/4jlobxsakncIxP/haAz7oc
+0IeEFyMzNqu6xjHKqCh9WaqHQpXf1JgJrrV6e+j7Ygh3CsqlSzW6jbSDyxFeKlUx
+pMYHebEJSebLKOKE0mfubsGqizJFOKRPkYr1bQ1/u5P6FNEr0sGQ7lS7BEGRhchJ
+g17bXD9moD2CeJZ2QJYj+YMqjYHk/W6ufHVVHc0pF5jV6/lVMsIYeQ8l3YhI/1hB
++1An/yFOvVgNonYJVd8MohaVPCD+dZUV3M+S76YRiGVniidGQWl5Y6PYzlEqEuM5
+FWftt9dSLVYhXhbABzcfN7mzoCZjyZEv+ZgUv9ipeaSUW0SZ+6iFv/abw7FkZSl4
+5B88ETP2LqClT21/yd69ZyGfdp3FR9daqKrjVjvCFu98zyHTsdR+OF8bsaI280iz
+3WKdXum+iiuadf66GIsjtIyqUQqog74Ji+VKP/xIgOBAFB4ktVULAypA+NsRNwYA
+IBDEa7EMiDduUPQ/9uavMN/F9Jf1POW4MljbH7C66NisM+/3YJ4l4Um2iXQPq9yp
+G6c0AJjzgL6/XtWhFnki1jJYvEJ9IkWvlL650zgXzEvEEOWI6TaQSwrrSh2UTD6a
+fJPCRsymB1rBEWb1FRVsidkr+/rFFL7D3QsDr+EWFesj5ItbABOPNt5w0obx0mKg
+WoKuZaklnqJvJT7JUdVRZQ6ei4JksMnIs+muEl7ouM1OM/e2VM5JRI+2MO4/1Sy9
+brEj3xY0pRYfXJxzNZsIepyKB8T2NoWfvOomcCXlYNz3rIRRVPWgxsV6kqTJuFo+
+Ypu+A7Q8P2AWDfssP2vaHvphJmk5OwUAq4LljFbo6KlC932c6cljUhTRukRsFfz5
+JoYf1dcdgcPg5YGX4qpUuqCGiT99dSIQ/WhCL6n4gLV/IXb5BuMbrmHvx1xVVbiT
+h8S4MjNNqv6zpLumJr8qI7sFfPLDYhm7erthjGYmVnG3n7eEeAu/QU2CJl4kHMoS
+FoRanXJ+o4tprVlrRQ0whlADoNK8swogk2vGtYqqCfYAHuh/aGtETA/vqZI71/j9
+4nDd8YH1hVyf5GI/QvkuqZiLeZKUIrNj03jHio8oHWrim1mBlRhWo/947ac6xHOq
+FqBufMZIC1f2zvHvav1Cu7Y6kAoKsn4h4gTjKw25SImYWL4Lx8GUsVWKl+pm8rEJ
+3NTh6I2Q6vt1EmfP2Oot56oUci+u8WtQ8wvEaoYWWWqKghPp9piEsfHTETmievN5
+8OKlLHwxWbE7xE7teDcAZw==
+====
diff --git a/tools/regression/usr.bin/uudecode/regress.out b/tools/regression/usr.bin/uudecode/regress.out
new file mode 100644
index 0000000..fa0dd08
--- /dev/null
+++ b/tools/regression/usr.bin/uudecode/regress.out
Binary files differ
diff --git a/tools/regression/usr.bin/uudecode/regress.sh b/tools/regression/usr.bin/uudecode/regress.sh
new file mode 100644
index 0000000..f131280
--- /dev/null
+++ b/tools/regression/usr.bin/uudecode/regress.sh
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+echo 1..2
+
+REGRESSION_START($1)
+
+REGRESSION_TEST_ONE(`uudecode -p < regress.traditional.in', `traditional')
+REGRESSION_TEST_ONE(`uudecode -p < regress.base64.in', `base64')
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/uudecode/regress.t b/tools/regression/usr.bin/uudecode/regress.t
new file mode 100644
index 0000000..a82aacd
--- /dev/null
+++ b/tools/regression/usr.bin/uudecode/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+m4 ../regress.m4 regress.sh | sh
diff --git a/tools/regression/usr.bin/uudecode/regress.traditional.in b/tools/regression/usr.bin/uudecode/regress.traditional.in
new file mode 100644
index 0000000..da81415
--- /dev/null
+++ b/tools/regression/usr.bin/uudecode/regress.traditional.in
@@ -0,0 +1,95 @@
+begin 644 regress.out
+M=![XYG<[;LZJX6VX="4_6IK%7W4DO3P.ZPE'B5^+X4^0$'UI_/]6C@%9T,2&
+M(VE$3"('^WCXHJ?W))`_NO0V6G6S"C%7&U[<9I!J\40&,A_>\0+R:A,.3KK'
+M/]"?V9$]6MR;HD3&\$V%MT0K?B3L(I<4/,=[5#1O"0&+#^MZ;J)D/)*:&F77
+M"P+P+SV6I`.716^=X4AG"G!T:!L[(!R=Z;>,8P0Q(<,X7OR`G&USW7*]@"PO
+M(PS(ZP88S7"(`H_*I/]TH-`ZBC%88-*WL_NMMRMS"Y0?*GZ@:5>KP8<;U00'
+MJRKQHKR.KCP@P@:S2?P+A#*U?+>CGI37+U4AVC]$^I,T62?M`TP7UM=R*QR[
+MD4:K6S$`"'\AM32=W-#:F1_V3ZZQ-'/89A6WU<C>-37T<S(?I16!;!0(WK<Y
+MRA69E&`TC\7\S01XIN:&I0Z0-G;!0D24X`D^IO>13\)N%;)50(Z6'>F![']+
+M5Y"285"H9VB.%`_9\/2,X[W77CJ!D_,U9SXBK#P\5UM!IYU]J-@7%MYV?=KD
+M;S)":^[UI?`N/V+LRMI`=V+4)PA@B5[NCZ<QX#C$?==_08=<)&#FXWYP?LGB
+M/H/GK@A$)=J?@6(O:%-INH0]!RKSG6:<LYT`0%QR9I?`:+)G&-B/>A3.HL33
+MZ=/.*I\QVFLZF=DKVG>9T(TE>H-'Q"!*O@4Q"TN%B>HZ&+INLL%$!\0>"LRU
+MFCG7#(UJL"V2IWX/93O1Y:I'V]%!U>(>`/%9,D%Q.V33LT8XJWR*#</&':`=
+M/R\)ZX4IR!E.WK;<+RJ$;*<N2''=Z]B3_YF#X:K;R8',8Z2[2[0/#'I'UQ\6
+MHHYQ,HT,5DF!&;*<Y2RX)W[3\QCCXATI<*O$="2:G)V`U$VC'SI?;>\N_-2Q
+MI!X]^)&8&)VGL@IL*SP37:;@*#9/R=J<`(I-7G`=L0!-LDFS!8;\]Y]Q"SPL
+MR;0[^T@X:T#8R+#<G6V-'_."8'OD.@R,[V%0)`7&@ZU&G99B`C2EKJL/7V-5
+M4M7BO1KN>%2&YK8G8)O.V.?AP@$?Q38\;[Q\`%0GM!O:*J&YK6"^:V=^X7CT
+M!V.#R^_,Y'IICT=-PI+/*':\4'Z(#=^FT`JEYNYH";A^6(#HO&M-V!IDR"JT
+MT,_D*$K3;33^J?N62#HPT9C+>%=2$K4M=BUM*A#AYHRY$O^2A+RP*/FX_-?)
+MW"+A;92OA.66QPS?*$@,"G'-=\N<W)(#-,[<W#FYPT0K#T`.;.42!%\BHN-!
+MC,O=4OB(!5%/>5D9WQ8L3<B21)F_?!Y0-AK<81,;9)YB.5'NN.Q%P^S/H$(C
+M5!/.UP79@L2P@%$#VT;*+<.O2G6&,W(R-95*J=HW:XHAX'X+O_RZK,KM23K[
+MD0)EP$O4Z6BROM0H;_?,='6(;<_61/1X[EZ)#SX5W`4J/<%W)RZ1:-4*1O%B
+M^[<.68!*;-%1F$_C`Z=R4N5D"8(,#NAN([B0+TNXE__Q;=&;]16M?\6'L_-Y
+MGF6BU3+3/;:#S\&!/.,.><I>(?J#5H/J:A>J&3X?)CWL5!AJZS:R5?-IN>:$
+M=';_73&F]-'2XQL@I;?+_L)PZ(5)CW_=@;T1?7]T94@?#OP41L3-OQ`5S*NN
+MN'ZPK$\`&.I!+@HF,9Y49<@6D>1-C3J<>E"LEW)A!(N4F),;8(V2,O_"*^GD
+M(8<($[S'1:"R%\G@-8HLHI_<ASUHU@3/V#BZ-3JX:_27TAUS[?RDD*MVI+)O
+M2.`\G<<1(4KBQY_&30PA)Q,:H1Y604#54/'QT<\Q1-33(VX;&>BD&XJ*J[X;
+MIF9O;9KGL2C0)R+B0B/MK:&1\8B(V)P&9F';:F:]#/C.*5W;!63Z+@1V+$$(
+MT&[!9B2&/XEGB3DI.1_%4@I\6F;EOA.>98^*#3:FB?KJT-AC8(486&;9$.4B
+MZ(F2;B5'_@FXMD^DR`3UN2N*XE34"6*[7.Y(Z6+"8V@XO[G83#-4O_G;)+S:
+MBU&0/+SWIT;B5JW0PD(?^K92L3BK$(',3>`QC=?6("#(</2LQ19@ONK@G(`H
+M=S(1]1D`GLH>X<+OA]2Q#-KFER6#L<SD4L<]>&]KKY''[W*.KZPQV"4%N@_G
+M:JG#!2S$(W'^<SUVF]7\`3SI'T!3\<%O#$_**BHN^J66M@+63PG1H1!F!95@
+M.'"F0@ASY;5@S4R@QQ0%G8"3#]#Y2W=VG=PN')+W(>L1_:^.JY,X.1DML+,:
+M.&)[QWH;1,Z@$MNPI)U$PQ?&K_<8K<_0L!%H0?+]+@K<O'+@F$ZF:S7=%]-?
+M!6B/9A3C%NK<!TP#W/JE"KA<OL5/]<N@&Q`UI0]Z,RP8+V&TRR,U&K1(;B6&
+MXR[R\V^TF02+]Q&Z&T2MSD?6IYKK+\IL&H_"%/K_\"7S^ZM/_I-4IXT-J<,5
+ME.B<,HS4$':E@4>^Y\U@NT&4(^(KBMP.2/,VA<^PH&O%0Z6O8W2[[?3[@DIG
+M5N1CB2!EO2D5^V(NCLZ^^$K#*<(C#]C\\2M)\QR27#9K]O(#+D3^89(Q@^O_
+M"</X"TM2;P`0-CH2]DI;,0*X8N<2`N7(S(9G@)'SW\B4^V(^FSA/*"A-BY_,
+MQ/T3C*ZW1JC*L(N)"].#W<\XG[3&7GO"U0J#%X3*81VS$L[4CER05.#W'KMB
+MQ`)/\N;F40.K;(8VBF1]QJ4?V26E\L"8:,Z;]$TT6GGCTQVQI?9*$^(O:K21
+MB31@-!IV2[*UN]-3MC^]`Z[Q6/PI!"/<(LR#/X"(M"S,HR;RJ;GWK,W12BR@
+MI(C]TU%E-:;_F4B^;HK9#O79@<.EA9C4)GA4CB$AN,?I.Q8&__ADC_=6=W#@
+M]@:+5KB+59.?EYP493U=\6ZK-W10^C3XVIFVA+A$XIB<#Y&$.8.<3?XKHE2Q
+MV(E@*XPX?;[[(JDWY_[D"VTW;].%S@S(-V,,?8U"YT,1)03Y![JF*O:WW,C$
+M:/S;(QBI'"=VP`,S3)',"2A*UJB0ZT:DB\LN..Z16#B#`=GISSCG#%A,R+^B
+M?YI!@9<MG?O*OOLQ`$6ER.9'<P7!N_O^V&@Y<6%K\>Y&MOQF0S*T":F(;:UQ
+MEY43B9#>;Z;,TN*9>PD8UHDMYE8&58#+_O=A'V%>/S2'!XV1;<>M._W)UUWP
+MO&C/56ST%YA@H.^'3T1JWUOI9X[H*\W4O.=#S13RN=B,*R?W5"5$SAJNG3_0
+M?R/IY0[4@2.NT?<8_B:IPQP4MJ>!+4?B#HXO'2>LP?`;W;\=<//I8=C+*4\T
+MMKI"AD5W[4R78TP5%2B`B5.>6@62&:T`!DQ%_I-K_.SM*U,LVHF)Q!NE*_%A
+M7'MKH@ZQ%6_0</<&,T37(+4')\&I73<DR=;L3"6[(MOY],K8Y&_WILZV`.)F
+M<HCC0WD-L)V4`ZX_NTZ1M*\&:/\JW7US>%FBDJ#^C$(0EIGQUHR_:2.<T/[4
+M]#M6>Y,KEH2VA'HO'D:=_L>W&B9D@F?%1?JK<"^Z@BSX<CP3C_R$CIMHW5.7
+MG7</R<FN7%/C4E#D+!(Z1:>@><6=^.:0A">TBNM^@ZXI^>ZCVP-:#7:ZX7@4
+MZ'$:7P3@:'$-)"0W&-#E[]DUNF4T>?GY/>%)B-#=@U4!?H:H;_6%N$^%3V-L
+MZKF+H<`&]7>7-7\4VEW>(E>"0'SDA?7EN%%@+0GJ%I/&:RW6EB$0K9U_)VHY
+MRQV8$_.),BW;OG/W)!UF=,/;@=YNEKP<;".">TM_JC3Q+0SNG/Y`^2[N:P>6
+MXB!N#C&B2&/(#'["/I801E^)`CU38=/UK0Z+I&Y[<K^-L;R.#%$-^#2NR./B
+MNTSY!F,J;U20<9WOV,6R8@^GW+J:B^"7]Z<TEI+\4V2&[`1GD;F,K05S#Y=P
+M*QG9NDXRODK2`7TRXD-[FI6NN,#*P_AY-;"74,U.L@C9W-6\@LCV%8MW?[12
+M@.>7_EI+N:D',E8@8#RS7G6+\5NP&[@$-_G)+HRF[PV.A3%%_E[QBED?E9)W
+MK<&OQ;B]@).LN"*SVH(UNCQ)'1Y?(7T'2DO[1XXZXCB*^&4-G;>[0F;!6+HH
+M\8YVXN[TCY0)L=]9+<3DP`)=6_N_J47.C;3A=\3+LNP#23,>0CVUT+FJW>8R
+MY-I\&1CQ0D.7IIT)?D$'KD';Y^LU(]OV`A`Q0Z14.NO.1+N$HB=X1DI%,UDP
+M35UO0IE@[5F+O/CI$U)9W`;`O*=>JL/L))5P4^J[);PW=5:\,T9MJ2X%"&DU
+M"_XCEH;QL:DG<(Q/_A:`S[H<T(>$%R,S-JNZQC'*J"A]6:J'0I7?U)@)KK5Z
+M>^C[8@AW"LJE2S6ZC;2#RQ%>*E4QI,8'>;$)2>;+*.*$TF?N;L&JBS)%.*1/
+MD8KU;0U_NY/Z%-$KTL&0[E2[!$&1A<A)@U[;7#]FH#V">)9V0)8C^8,JC8'D
+M_6ZN?'55'<TI%YC5Z_E5,L(8>0\EW8A(_UA!^U`G_R%.O5@-HG8)5=\,HA:5
+M/"#^=945W,^2[Z81B&5GBB=&06EY8Z/8SE$J$N,Y%6?MM]=2+58A7A;`!S<?
+M-[FSH"9CR9$O^9@4O]BI>:246T29^ZB%O_:;P[%D92EXY!\\$3/V+J"E3VU_
+MR=Z]9R&?=IW%1]=:J*KC5CO"%N]\SR'3L=1^.%\;L:(V\TBSW6*=7NF^BBN:
+M=?ZZ&(LCM(RJ40JH@[X)B^5*/_Q(@.!`%!XDM54+`RI`^-L1-P8`(!#$:[$,
+MB#=N4/0_]N:O,-_%])?U/.6X,EC;'["ZZ-BL,^_W8)XEX4FVB70/J]RI&Z<T
+M`)CS@+Z_7M6A%GDBUC)8O$)](D6OE+ZYTS@7S$O$$.6(Z3:02PKK2AV43#Z:
+M?)/"1LRF!UK!$6;U%15LB=DK^_K%%+[#W0L#K^$6%>LCY(M;`!./-MYPTH;Q
+MTF*@6H*N9:DEGJ)O)3[)4=5190Z>BX)DL,G(L^FN$E[HN,U.,_>V5,Y)1(^V
+M,.X_U2R];K$CWQ8TI18?7)QS-9L(>IR*!\3V-H6?O.HF<"7E8-SWK(115/6@
+MQL5ZDJ3)N%H^8IN^`[0\/V`6#?LL/VO:'OIA)FDY.P4`JX+EC%;HZ*E"]WV<
+MZ<EC4A31ND1L%?SY)H8?U=<=@</@Y8&7XJI4NJ"&B3]]=2(0_6A"+ZGX@+5_
+M(7;Y!N,;KF'OQUQ55;B3A\2X,C--JOZSI+NF)K\J([L%?/+#8AF[>KMAC&8F
+M5G&WG[>$>`N_04V")EXD',H2%H1:G7)^HXMIK5EK10TPAE`#H-*\LPH@DVO&
+MM8JJ"?8`'NA_:&M$3`_OJ9([U_C]XG#=\8'UA5R?Y&(_0ODNJ9B+>9*4(K-C
+MTWC'BH\H'6KBFUF!E1A6H_]X[:<ZQ'.J%J!N?,9("U?VSO'O:OU"N[8ZD`H*
+MLGXAX@3C*PVY2(F86+X+Q\&4L56*E^IF\K$)W-3AZ(V0ZOMU$F?/V.HMYZH4
+M<B^N\6M0\PO$:H8666J*@A/I]IB$L?'3$3FB>O-Y\.*E+'PQ6;$[Q$[M>#<`
+!9P``
+`
+end
diff --git a/tools/regression/usr.bin/uuencode/Makefile b/tools/regression/usr.bin/uuencode/Makefile
new file mode 100644
index 0000000..b937d41
--- /dev/null
+++ b/tools/regression/usr.bin/uuencode/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}
diff --git a/tools/regression/usr.bin/uuencode/regress.base64.out b/tools/regression/usr.bin/uuencode/regress.base64.out
new file mode 100644
index 0000000..046f6c5
--- /dev/null
+++ b/tools/regression/usr.bin/uuencode/regress.base64.out
@@ -0,0 +1,74 @@
+begin-base64 644 regress.in
+dB745nc7bs6q4W24dCU/WprFX3UkvTwO6wlHiV+L4U+QEH1p/P9WjgFZ0MSGI2lETCIH+3j4oqf3
+JJA/uvQ2WnWzCjFXG17cZpBq8UQGMh/e8QLyahMOTrrHP9Cf2ZE9WtybokTG8E2Ft0QrfiTsIpcU
+PMd7VDRvCQGLD+t6bqJkPJKaGmXXCwLwLz2WpAOXRW+d4UhnCnB0aBs7IByd6beMYwQxIcM4XvyA
+nG1z3XK9gCwvIwzI6wYYzXCIAo/KpP90oNA6ijFYYNK3s/uttytzC5QfKn6gaVerwYcb1QQHqyrx
+oryOrjwgwgazSfwLhDK1fLejnpTXL1Uh2j9E+pM0WSftA0wX1tdyKxy7kUarWzEACH8htTSd3NDa
+mR/2T66xNHPYZhW31cjeNTX0czIfpRWBbBQI3rc5yhWZlGA0j8X8zQR4puaGpQ6QNnbBQkSU4Ak+
+pveRT8JuFbJVQI6WHemB7H9LV5CSYVCoZ2iOFA/Z8PSM473XXjqBk/M1Zz4irDw8V1tBp519qNgX
+Ft52fdrkbzJCa+71pfAuP2LsytpAd2LUJwhgiV7uj6cx4DjEfdd/QYdcJGDm435wfsniPoPnrghE
+JdqfgWIvaFNpuoQ9ByrznWacs50AQFxyZpfAaLJnGNiPehTOosTT6dPOKp8x2ms6mdkr2neZ0I0l
+eoNHxCBKvgUxC0uFieo6GLpussFEB8QeCsy1mjnXDI1qsC2Sp34PZTvR5apH29FB1eIeAPFZMkFx
+O2TTs0Y4q3yKDcPGHaAdPy8J64UpyBlO3rbcLyqEbKcuSHHd69iT/5mD4arbyYHMY6S7S7QPDHpH
+1x8Woo5xMo0MVkmBGbKc5Sy4J37T8xjj4h0pcKvEdCSanJ2A1E2jHzpfbe8u/NSxpB49+JGYGJ2n
+sgpsKzwTXabgKDZPydqcAIpNXnAdsQBNskmzBYb8959xCzwsybQ7+0g4a0DYyLDcnW2NH/OCYHvk
+OgyM72FQJAXGg61GnZZiAjSlrqsPX2NVUtXivRrueFSG5rYnYJvO2OfhwgEfxTY8b7x8AFQntBva
+KqG5rWC+a2d+4Xj0B2ODy+/M5Hppj0dNwpLPKHa8UH6IDd+m0Aql5u5oCbh+WIDovGtN2BpkyCq0
+0M/kKErTbTT+qfuWSDow0ZjLeFdSErUtdi1tKhDh5oy5Ev+ShLywKPm4/NfJ3CLhbZSvhOWWxwzf
+KEgMCnHNd8uc3JIDNM7c3Dm5w0QrD0AObOUSBF8iouNBjMvdUviIBVFPeVkZ3xYsTciSRJm/fB5Q
+NhrcYRMbZJ5iOVHuuOxFw+zPoEIjVBPO1wXZgsSwgFED20bKLcOvSnWGM3IyNZVKqdo3a4oh4H4L
+v/y6rMrtSTr7kQJlwEvU6WiyvtQob/fMdHWIbc/WRPR47l6JDz4V3AUqPcF3Jy6RaNUKRvFi+7cO
+WYBKbNFRmE/jA6dyUuVkCYIMDuhuI7iQL0u4l//xbdGb9RWtf8WHs/N5nmWi1TLTPbaDz8GBPOMO
+ecpeIfqDVoPqaheqGT4fJj3sVBhq6zayVfNpueaEdHb/XTGm9NHS4xsgpbfL/sJw6IVJj3/dgb0R
+fX90ZUgfDvwURsTNvxAVzKuuuH6wrE8AGOpBLgomMZ5UZcgWkeRNjTqcelCsl3JhBIuUmJMbYI2S
+Mv/CK+nkIYcIE7zHRaCyF8ngNYosop/chz1o1gTP2Di6NTq4a/SX0h1z7fykkKt2pLJvSOA8nccR
+IUrix5/GTQwhJxMaoR5WQUDVUPHx0c8xRNTTI24bGeikG4qKq74bpmZvbZrnsSjQJyLiQiPtraGR
+8YiI2JwGZmHbama9DPjOKV3bBWT6LgR2LEEI0G7BZiSGP4lniTkpOR/FUgp8WmblvhOeZY+KDTam
+ifrq0NhjYIUYWGbZEOUi6ImSbiVH/gm4tk+kyAT1uSuK4lTUCWK7XO5I6WLCY2g4v7nYTDNUv/nb
+JLzai1GQPLz3p0biVq3QwkIf+rZSsTirEIHMTeAxjdfWICDIcPSsxRZgvurgnIAodzIR9RkAnsoe
+4cLvh9SxDNrmlyWDsczkUsc9eG9rr5HH73KOr6wx2CUFug/naqnDBSzEI3H+cz12m9X8ATzpH0BT
+8cFvDE/KKiou+qWWtgLWTwnRoRBmBZVgOHCmQghz5bVgzUygxxQFnYCTD9D5S3d2ndwuHJL3IesR
+/a+Oq5M4ORktsLMaOGJ7x3obRM6gEtuwpJ1EwxfGr/cYrc/QsBFoQfL9LgrcvHLgmE6mazXdF9Nf
+BWiPZhTjFurcB0wD3PqlCrhcvsVP9cugGxA1pQ96MywYL2G0yyM1GrRIbiWG4y7y82+0mQSL9xG6
+G0StzkfWp5rrL8psGo/CFPr/8CXz+6tP/pNUp40NqcMVlOicMozUEHalgUe+581gu0GUI+IritwO
+SPM2hc+woGvFQ6WvY3S77fT7gkpnVuRjiSBlvSkV+2Iujs6++ErDKcIjD9j88StJ8xySXDZr9vID
+LkT+YZIxg+v/CcP4C0tSbwAQNjoS9kpbMQK4YucSAuXIzIZngJHz38iU+2I+mzhPKChNi5/MxP0T
+jK63RqjKsIuJC9OD3c84n7TGXnvC1QqDF4TKYR2zEs7UjlyQVOD3HrtixAJP8ubmUQOrbIY2imR9
+xqUf2SWl8sCYaM6b9E00Wnnj0x2xpfZKE+IvarSRiTRgNBp2S7K1u9NTtj+9A67xWPwpBCPcIsyD
+P4CItCzMoybyqbn3rM3RSiygpIj901FlNab/mUi+borZDvXZgcOlhZjUJnhUjiEhuMfpOxYG//hk
+j/dWd3Dg9gaLVriLVZOfl5wUZT1d8W6rN3RQ+jT42pm2hLhE4picD5GEOYOcTf4rolSx2IlgK4w4
+fb77Iqk35/7kC203b9OFzgzIN2MMfY1C50MRJQT5B7qmKva33MjEaPzbIxipHCd2wAMzTJHMCShK
+1qiQ60aki8suOO6RWDiDAdnpzzjnDFhMyL+if5pBgZctnfvKvvsxAEWlyOZHcwXBu/v+2Gg5cWFr
+8e5GtvxmQzK0CamIba1xl5UTiZDeb6bM0uKZewkY1okt5lYGVYDL/vdhH2FePzSHB42RbcetO/3J
+113wvGjPVWz0F5hgoO+HT0Rq31vpZ47oK83UvOdDzRTyudiMKyf3VCVEzhqunT/QfyPp5Q7UgSOu
+0fcY/iapwxwUtqeBLUfiDo4vHSeswfAb3b8dcPPpYdjLKU80trpChkV37UyXY0wVFSiAiVOeWgWS
+Ga0ABkxF/pNr/OztK1Ms2omJxBulK/FhXHtrog6xFW/QcPcGM0TXILUHJ8GpXTckydbsTCW7Itv5
+9MrY5G/3ps62AOJmcojjQ3kNsJ2UA64/u06RtK8GaP8q3X1zeFmikqD+jEIQlpnx1oy/aSOc0P7U
+9DtWe5MrloS2hHovHkad/se3GiZkgmfFRfqrcC+6giz4cjwTj/yEjpto3VOXnXcPycmuXFPjUlDk
+LBI6RaegecWd+OaQhCe0iut+g64p+e6j2wNaDXa64XgU6HEaXwTgaHENJCQ3GNDl79k1umU0efn5
+PeFJiNDdg1UBfoaob/WFuE+FT2Ns6rmLocAG9XeXNX8U2l3eIleCQHzkhfXluFFgLQnqFpPGay3W
+liEQrZ1/J2o5yx2YE/OJMi3bvnP3JB1mdMPbgd5ulrwcbCOCe0t/qjTxLQzunP5A+S7uaweW4iBu
+DjGiSGPIDH7CPpYQRl+JAj1TYdP1rQ6LpG57cr+NsbyODFEN+DSuyOPiu0z5BmMqb1SQcZ3v2MWy
+Yg+n3Lqai+CX96c0lpL8U2SG7ARnkbmMrQVzD5dwKxnZuk4yvkrSAX0y4kN7mpWuuMDKw/h5NbCX
+UM1OsgjZ3NW8gsj2FYt3f7RSgOeX/lpLuakHMlYgYDyzXnWL8VuwG7gEN/nJLoym7w2OhTFF/l7x
+ilkflZJ3rcGvxbi9gJOsuCKz2oI1ujxJHR5fIX0HSkv7R4464jiK+GUNnbe7QmbBWLoo8Y524u70
+j5QJsd9ZLcTkwAJdW/u/qUXOjbThd8TLsuwDSTMeQj210Lmq3eYy5Np8GRjxQkOXpp0JfkEHrkHb
+5+s1I9v2AhAxQ6RUOuvORLuEoid4RkpFM1kwTV1vQplg7VmLvPjpE1JZ3AbAvKdeqsPsJJVwU+q7
+Jbw3dVa8M0ZtqS4FCGk1C/4jlobxsakncIxP/haAz7oc0IeEFyMzNqu6xjHKqCh9WaqHQpXf1JgJ
+rrV6e+j7Ygh3CsqlSzW6jbSDyxFeKlUxpMYHebEJSebLKOKE0mfubsGqizJFOKRPkYr1bQ1/u5P6
+FNEr0sGQ7lS7BEGRhchJg17bXD9moD2CeJZ2QJYj+YMqjYHk/W6ufHVVHc0pF5jV6/lVMsIYeQ8l
+3YhI/1hB+1An/yFOvVgNonYJVd8MohaVPCD+dZUV3M+S76YRiGVniidGQWl5Y6PYzlEqEuM5FWft
+t9dSLVYhXhbABzcfN7mzoCZjyZEv+ZgUv9ipeaSUW0SZ+6iFv/abw7FkZSl45B88ETP2LqClT21/
+yd69ZyGfdp3FR9daqKrjVjvCFu98zyHTsdR+OF8bsaI280iz3WKdXum+iiuadf66GIsjtIyqUQqo
+g74Ji+VKP/xIgOBAFB4ktVULAypA+NsRNwYAIBDEa7EMiDduUPQ/9uavMN/F9Jf1POW4MljbH7C6
+6NisM+/3YJ4l4Um2iXQPq9ypG6c0AJjzgL6/XtWhFnki1jJYvEJ9IkWvlL650zgXzEvEEOWI6TaQ
+SwrrSh2UTD6afJPCRsymB1rBEWb1FRVsidkr+/rFFL7D3QsDr+EWFesj5ItbABOPNt5w0obx0mKg
+WoKuZaklnqJvJT7JUdVRZQ6ei4JksMnIs+muEl7ouM1OM/e2VM5JRI+2MO4/1Sy9brEj3xY0pRYf
+XJxzNZsIepyKB8T2NoWfvOomcCXlYNz3rIRRVPWgxsV6kqTJuFo+Ypu+A7Q8P2AWDfssP2vaHvph
+Jmk5OwUAq4LljFbo6KlC932c6cljUhTRukRsFfz5JoYf1dcdgcPg5YGX4qpUuqCGiT99dSIQ/WhC
+L6n4gLV/IXb5BuMbrmHvx1xVVbiTh8S4MjNNqv6zpLumJr8qI7sFfPLDYhm7erthjGYmVnG3n7eE
+eAu/QU2CJl4kHMoSFoRanXJ+o4tprVlrRQ0whlADoNK8swogk2vGtYqqCfYAHuh/aGtETA/vqZI7
+1/j94nDd8YH1hVyf5GI/QvkuqZiLeZKUIrNj03jHio8oHWrim1mBlRhWo/947ac6xHOqFqBufMZI
+C1f2zvHvav1Cu7Y6kAoKsn4h4gTjKw25SImYWL4Lx8GUsVWKl+pm8rEJ3NTh6I2Q6vt1EmfP2Oot
+56oUci+u8WtQ8wvEaoYWWWqKghPp9piEsfHTETmievN58OKlLHwxWbE7xE7teDcAZw==
+====
diff --git a/tools/regression/usr.bin/uuencode/regress.in b/tools/regression/usr.bin/uuencode/regress.in
new file mode 100644
index 0000000..fa0dd08
--- /dev/null
+++ b/tools/regression/usr.bin/uuencode/regress.in
Binary files differ
diff --git a/tools/regression/usr.bin/uuencode/regress.sh b/tools/regression/usr.bin/uuencode/regress.sh
new file mode 100644
index 0000000..e14b2c3
--- /dev/null
+++ b/tools/regression/usr.bin/uuencode/regress.sh
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+echo 1..2
+
+REGRESSION_START($1)
+
+# To make sure we end up with matching headers.
+umask 022
+
+REGRESSION_TEST(`traditional', `uuencode regress.in < regress.in')
+REGRESSION_TEST(`base64', `uuencode -m regress.in < regress.in')
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/uuencode/regress.t b/tools/regression/usr.bin/uuencode/regress.t
new file mode 100644
index 0000000..a82aacd
--- /dev/null
+++ b/tools/regression/usr.bin/uuencode/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+m4 ../regress.m4 regress.sh | sh
diff --git a/tools/regression/usr.bin/uuencode/regress.traditional.out b/tools/regression/usr.bin/uuencode/regress.traditional.out
new file mode 100644
index 0000000..ee1352f
--- /dev/null
+++ b/tools/regression/usr.bin/uuencode/regress.traditional.out
@@ -0,0 +1,95 @@
+begin 644 regress.in
+M=![XYG<[;LZJX6VX="4_6IK%7W4DO3P.ZPE'B5^+X4^0$'UI_/]6C@%9T,2&
+M(VE$3"('^WCXHJ?W))`_NO0V6G6S"C%7&U[<9I!J\40&,A_>\0+R:A,.3KK'
+M/]"?V9$]6MR;HD3&\$V%MT0K?B3L(I<4/,=[5#1O"0&+#^MZ;J)D/)*:&F77
+M"P+P+SV6I`.716^=X4AG"G!T:!L[(!R=Z;>,8P0Q(<,X7OR`G&USW7*]@"PO
+M(PS(ZP88S7"(`H_*I/]TH-`ZBC%88-*WL_NMMRMS"Y0?*GZ@:5>KP8<;U00'
+MJRKQHKR.KCP@P@:S2?P+A#*U?+>CGI37+U4AVC]$^I,T62?M`TP7UM=R*QR[
+MD4:K6S$`"'\AM32=W-#:F1_V3ZZQ-'/89A6WU<C>-37T<S(?I16!;!0(WK<Y
+MRA69E&`TC\7\S01XIN:&I0Z0-G;!0D24X`D^IO>13\)N%;)50(Z6'>F![']+
+M5Y"285"H9VB.%`_9\/2,X[W77CJ!D_,U9SXBK#P\5UM!IYU]J-@7%MYV?=KD
+M;S)":^[UI?`N/V+LRMI`=V+4)PA@B5[NCZ<QX#C$?==_08=<)&#FXWYP?LGB
+M/H/GK@A$)=J?@6(O:%-INH0]!RKSG6:<LYT`0%QR9I?`:+)G&-B/>A3.HL33
+MZ=/.*I\QVFLZF=DKVG>9T(TE>H-'Q"!*O@4Q"TN%B>HZ&+INLL%$!\0>"LRU
+MFCG7#(UJL"V2IWX/93O1Y:I'V]%!U>(>`/%9,D%Q.V33LT8XJWR*#</&':`=
+M/R\)ZX4IR!E.WK;<+RJ$;*<N2''=Z]B3_YF#X:K;R8',8Z2[2[0/#'I'UQ\6
+MHHYQ,HT,5DF!&;*<Y2RX)W[3\QCCXATI<*O$="2:G)V`U$VC'SI?;>\N_-2Q
+MI!X]^)&8&)VGL@IL*SP37:;@*#9/R=J<`(I-7G`=L0!-LDFS!8;\]Y]Q"SPL
+MR;0[^T@X:T#8R+#<G6V-'_."8'OD.@R,[V%0)`7&@ZU&G99B`C2EKJL/7V-5
+M4M7BO1KN>%2&YK8G8)O.V.?AP@$?Q38\;[Q\`%0GM!O:*J&YK6"^:V=^X7CT
+M!V.#R^_,Y'IICT=-PI+/*':\4'Z(#=^FT`JEYNYH";A^6(#HO&M-V!IDR"JT
+MT,_D*$K3;33^J?N62#HPT9C+>%=2$K4M=BUM*A#AYHRY$O^2A+RP*/FX_-?)
+MW"+A;92OA.66QPS?*$@,"G'-=\N<W)(#-,[<W#FYPT0K#T`.;.42!%\BHN-!
+MC,O=4OB(!5%/>5D9WQ8L3<B21)F_?!Y0-AK<81,;9)YB.5'NN.Q%P^S/H$(C
+M5!/.UP79@L2P@%$#VT;*+<.O2G6&,W(R-95*J=HW:XHAX'X+O_RZK,KM23K[
+MD0)EP$O4Z6BROM0H;_?,='6(;<_61/1X[EZ)#SX5W`4J/<%W)RZ1:-4*1O%B
+M^[<.68!*;-%1F$_C`Z=R4N5D"8(,#NAN([B0+TNXE__Q;=&;]16M?\6'L_-Y
+MGF6BU3+3/;:#S\&!/.,.><I>(?J#5H/J:A>J&3X?)CWL5!AJZS:R5?-IN>:$
+M=';_73&F]-'2XQL@I;?+_L)PZ(5)CW_=@;T1?7]T94@?#OP41L3-OQ`5S*NN
+MN'ZPK$\`&.I!+@HF,9Y49<@6D>1-C3J<>E"LEW)A!(N4F),;8(V2,O_"*^GD
+M(8<($[S'1:"R%\G@-8HLHI_<ASUHU@3/V#BZ-3JX:_27TAUS[?RDD*MVI+)O
+M2.`\G<<1(4KBQY_&30PA)Q,:H1Y604#54/'QT<\Q1-33(VX;&>BD&XJ*J[X;
+MIF9O;9KGL2C0)R+B0B/MK:&1\8B(V)P&9F';:F:]#/C.*5W;!63Z+@1V+$$(
+MT&[!9B2&/XEGB3DI.1_%4@I\6F;EOA.>98^*#3:FB?KJT-AC8(486&;9$.4B
+MZ(F2;B5'_@FXMD^DR`3UN2N*XE34"6*[7.Y(Z6+"8V@XO[G83#-4O_G;)+S:
+MBU&0/+SWIT;B5JW0PD(?^K92L3BK$(',3>`QC=?6("#(</2LQ19@ONK@G(`H
+M=S(1]1D`GLH>X<+OA]2Q#-KFER6#L<SD4L<]>&]KKY''[W*.KZPQV"4%N@_G
+M:JG#!2S$(W'^<SUVF]7\`3SI'T!3\<%O#$_**BHN^J66M@+63PG1H1!F!95@
+M.'"F0@ASY;5@S4R@QQ0%G8"3#]#Y2W=VG=PN')+W(>L1_:^.JY,X.1DML+,:
+M.&)[QWH;1,Z@$MNPI)U$PQ?&K_<8K<_0L!%H0?+]+@K<O'+@F$ZF:S7=%]-?
+M!6B/9A3C%NK<!TP#W/JE"KA<OL5/]<N@&Q`UI0]Z,RP8+V&TRR,U&K1(;B6&
+MXR[R\V^TF02+]Q&Z&T2MSD?6IYKK+\IL&H_"%/K_\"7S^ZM/_I-4IXT-J<,5
+ME.B<,HS4$':E@4>^Y\U@NT&4(^(KBMP.2/,VA<^PH&O%0Z6O8W2[[?3[@DIG
+M5N1CB2!EO2D5^V(NCLZ^^$K#*<(C#]C\\2M)\QR27#9K]O(#+D3^89(Q@^O_
+M"</X"TM2;P`0-CH2]DI;,0*X8N<2`N7(S(9G@)'SW\B4^V(^FSA/*"A-BY_,
+MQ/T3C*ZW1JC*L(N)"].#W<\XG[3&7GO"U0J#%X3*81VS$L[4CER05.#W'KMB
+MQ`)/\N;F40.K;(8VBF1]QJ4?V26E\L"8:,Z;]$TT6GGCTQVQI?9*$^(O:K21
+MB31@-!IV2[*UN]-3MC^]`Z[Q6/PI!"/<(LR#/X"(M"S,HR;RJ;GWK,W12BR@
+MI(C]TU%E-:;_F4B^;HK9#O79@<.EA9C4)GA4CB$AN,?I.Q8&__ADC_=6=W#@
+M]@:+5KB+59.?EYP493U=\6ZK-W10^C3XVIFVA+A$XIB<#Y&$.8.<3?XKHE2Q
+MV(E@*XPX?;[[(JDWY_[D"VTW;].%S@S(-V,,?8U"YT,1)03Y![JF*O:WW,C$
+M:/S;(QBI'"=VP`,S3)',"2A*UJB0ZT:DB\LN..Z16#B#`=GISSCG#%A,R+^B
+M?YI!@9<MG?O*OOLQ`$6ER.9'<P7!N_O^V&@Y<6%K\>Y&MOQF0S*T":F(;:UQ
+MEY43B9#>;Z;,TN*9>PD8UHDMYE8&58#+_O=A'V%>/S2'!XV1;<>M._W)UUWP
+MO&C/56ST%YA@H.^'3T1JWUOI9X[H*\W4O.=#S13RN=B,*R?W5"5$SAJNG3_0
+M?R/IY0[4@2.NT?<8_B:IPQP4MJ>!+4?B#HXO'2>LP?`;W;\=<//I8=C+*4\T
+MMKI"AD5W[4R78TP5%2B`B5.>6@62&:T`!DQ%_I-K_.SM*U,LVHF)Q!NE*_%A
+M7'MKH@ZQ%6_0</<&,T37(+4')\&I73<DR=;L3"6[(MOY],K8Y&_WILZV`.)F
+M<HCC0WD-L)V4`ZX_NTZ1M*\&:/\JW7US>%FBDJ#^C$(0EIGQUHR_:2.<T/[4
+M]#M6>Y,KEH2VA'HO'D:=_L>W&B9D@F?%1?JK<"^Z@BSX<CP3C_R$CIMHW5.7
+MG7</R<FN7%/C4E#D+!(Z1:>@><6=^.:0A">TBNM^@ZXI^>ZCVP-:#7:ZX7@4
+MZ'$:7P3@:'$-)"0W&-#E[]DUNF4T>?GY/>%)B-#=@U4!?H:H;_6%N$^%3V-L
+MZKF+H<`&]7>7-7\4VEW>(E>"0'SDA?7EN%%@+0GJ%I/&:RW6EB$0K9U_)VHY
+MRQV8$_.),BW;OG/W)!UF=,/;@=YNEKP<;".">TM_JC3Q+0SNG/Y`^2[N:P>6
+MXB!N#C&B2&/(#'["/I801E^)`CU38=/UK0Z+I&Y[<K^-L;R.#%$-^#2NR./B
+MNTSY!F,J;U20<9WOV,6R8@^GW+J:B^"7]Z<TEI+\4V2&[`1GD;F,K05S#Y=P
+M*QG9NDXRODK2`7TRXD-[FI6NN,#*P_AY-;"74,U.L@C9W-6\@LCV%8MW?[12
+M@.>7_EI+N:D',E8@8#RS7G6+\5NP&[@$-_G)+HRF[PV.A3%%_E[QBED?E9)W
+MK<&OQ;B]@).LN"*SVH(UNCQ)'1Y?(7T'2DO[1XXZXCB*^&4-G;>[0F;!6+HH
+M\8YVXN[TCY0)L=]9+<3DP`)=6_N_J47.C;3A=\3+LNP#23,>0CVUT+FJW>8R
+MY-I\&1CQ0D.7IIT)?D$'KD';Y^LU(]OV`A`Q0Z14.NO.1+N$HB=X1DI%,UDP
+M35UO0IE@[5F+O/CI$U)9W`;`O*=>JL/L))5P4^J[);PW=5:\,T9MJ2X%"&DU
+M"_XCEH;QL:DG<(Q/_A:`S[H<T(>$%R,S-JNZQC'*J"A]6:J'0I7?U)@)KK5Z
+M>^C[8@AW"LJE2S6ZC;2#RQ%>*E4QI,8'>;$)2>;+*.*$TF?N;L&JBS)%.*1/
+MD8KU;0U_NY/Z%-$KTL&0[E2[!$&1A<A)@U[;7#]FH#V">)9V0)8C^8,JC8'D
+M_6ZN?'55'<TI%YC5Z_E5,L(8>0\EW8A(_UA!^U`G_R%.O5@-HG8)5=\,HA:5
+M/"#^=945W,^2[Z81B&5GBB=&06EY8Z/8SE$J$N,Y%6?MM]=2+58A7A;`!S<?
+M-[FSH"9CR9$O^9@4O]BI>:246T29^ZB%O_:;P[%D92EXY!\\$3/V+J"E3VU_
+MR=Z]9R&?=IW%1]=:J*KC5CO"%N]\SR'3L=1^.%\;L:(V\TBSW6*=7NF^BBN:
+M=?ZZ&(LCM(RJ40JH@[X)B^5*/_Q(@.!`%!XDM54+`RI`^-L1-P8`(!#$:[$,
+MB#=N4/0_]N:O,-_%])?U/.6X,EC;'["ZZ-BL,^_W8)XEX4FVB70/J]RI&Z<T
+M`)CS@+Z_7M6A%GDBUC)8O$)](D6OE+ZYTS@7S$O$$.6(Z3:02PKK2AV43#Z:
+M?)/"1LRF!UK!$6;U%15LB=DK^_K%%+[#W0L#K^$6%>LCY(M;`!./-MYPTH;Q
+MTF*@6H*N9:DEGJ)O)3[)4=5190Z>BX)DL,G(L^FN$E[HN,U.,_>V5,Y)1(^V
+M,.X_U2R];K$CWQ8TI18?7)QS-9L(>IR*!\3V-H6?O.HF<"7E8-SWK(115/6@
+MQL5ZDJ3)N%H^8IN^`[0\/V`6#?LL/VO:'OIA)FDY.P4`JX+EC%;HZ*E"]WV<
+MZ<EC4A31ND1L%?SY)H8?U=<=@</@Y8&7XJI4NJ"&B3]]=2(0_6A"+ZGX@+5_
+M(7;Y!N,;KF'OQUQ55;B3A\2X,C--JOZSI+NF)K\J([L%?/+#8AF[>KMAC&8F
+M5G&WG[>$>`N_04V")EXD',H2%H1:G7)^HXMIK5EK10TPAE`#H-*\LPH@DVO&
+MM8JJ"?8`'NA_:&M$3`_OJ9([U_C]XG#=\8'UA5R?Y&(_0ODNJ9B+>9*4(K-C
+MTWC'BH\H'6KBFUF!E1A6H_]X[:<ZQ'.J%J!N?,9("U?VSO'O:OU"N[8ZD`H*
+MLGXAX@3C*PVY2(F86+X+Q\&4L56*E^IF\K$)W-3AZ(V0ZOMU$F?/V.HMYZH4
+M<B^N\6M0\PO$:H8666J*@A/I]IB$L?'3$3FB>O-Y\.*E+'PQ6;$[Q$[M>#<`
+!9P``
+`
+end
diff --git a/tools/regression/usr.bin/xargs/Makefile b/tools/regression/usr.bin/xargs/Makefile
new file mode 100644
index 0000000..b937d41
--- /dev/null
+++ b/tools/regression/usr.bin/xargs/Makefile
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+all:
+ @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}
diff --git a/tools/regression/usr.bin/xargs/regress.I.out b/tools/regression/usr.bin/xargs/regress.I.out
new file mode 100644
index 0000000..f2a6a1e
--- /dev/null
+++ b/tools/regression/usr.bin/xargs/regress.I.out
@@ -0,0 +1,4 @@
+The quick brown quick brown quick brown quick brownquick brown quick brown %
+The fox jumped fox jumped fox jumped fox jumpedfox jumped fox jumped %
+The over the lazy over the lazy over the lazy over the lazyover the lazy over the lazy %
+The dog dog dog dogdog dog %
diff --git a/tools/regression/usr.bin/xargs/regress.J.out b/tools/regression/usr.bin/xargs/regress.J.out
new file mode 100644
index 0000000..b88a41e
--- /dev/null
+++ b/tools/regression/usr.bin/xargs/regress.J.out
@@ -0,0 +1 @@
+The quick brown fox jumped over the lazy dog again.
diff --git a/tools/regression/usr.bin/xargs/regress.L.out b/tools/regression/usr.bin/xargs/regress.L.out
new file mode 100644
index 0000000..7359dee
--- /dev/null
+++ b/tools/regression/usr.bin/xargs/regress.L.out
@@ -0,0 +1,2 @@
+quick brown fox jumped over the lazy
+dog
diff --git a/tools/regression/usr.bin/xargs/regress.R.out b/tools/regression/usr.bin/xargs/regress.R.out
new file mode 100644
index 0000000..6fe947f
--- /dev/null
+++ b/tools/regression/usr.bin/xargs/regress.R.out
@@ -0,0 +1,4 @@
+The quick brown % % %% % %
+The fox jumped % % %% % %
+The over the lazy % % %% % %
+The dog % % %% % %
diff --git a/tools/regression/usr.bin/xargs/regress.in b/tools/regression/usr.bin/xargs/regress.in
new file mode 100644
index 0000000..5252b48
--- /dev/null
+++ b/tools/regression/usr.bin/xargs/regress.in
@@ -0,0 +1,4 @@
+quick brown
+fox jumped
+over the lazy
+dog
diff --git a/tools/regression/usr.bin/xargs/regress.normal.out b/tools/regression/usr.bin/xargs/regress.normal.out
new file mode 100644
index 0000000..458d9cb
--- /dev/null
+++ b/tools/regression/usr.bin/xargs/regress.normal.out
@@ -0,0 +1 @@
+The quick brown fox jumped over the lazy dog
diff --git a/tools/regression/usr.bin/xargs/regress.sh b/tools/regression/usr.bin/xargs/regress.sh
new file mode 100644
index 0000000..7c8db1d
--- /dev/null
+++ b/tools/regression/usr.bin/xargs/regress.sh
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+echo 1..5
+
+REGRESSION_START($1)
+
+REGRESSION_TEST(`normal', `xargs echo The < regress.in')
+REGRESSION_TEST(`I', `xargs -I% echo The % % % %% % % < regress.in')
+REGRESSION_TEST(`J', `xargs -J% echo The % again. < regress.in')
+REGRESSION_TEST(`L', `xargs -L3 echo < regress.in')
+REGRESSION_TEST(`R', `xargs -I% -R1 echo The % % % %% % % < regress.in')
+
+REGRESSION_END()
diff --git a/tools/regression/usr.bin/xargs/regress.t b/tools/regression/usr.bin/xargs/regress.t
new file mode 100644
index 0000000..a82aacd
--- /dev/null
+++ b/tools/regression/usr.bin/xargs/regress.t
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $FreeBSD$
+
+cd `dirname $0`
+
+m4 ../regress.m4 regress.sh | sh
diff --git a/tools/regression/usr.sbin/Makefile b/tools/regression/usr.sbin/Makefile
new file mode 100644
index 0000000..d787c46
--- /dev/null
+++ b/tools/regression/usr.sbin/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR= sa
+
+.include <bsd.subdir.mk>
diff --git a/tools/regression/usr.sbin/sa/Makefile b/tools/regression/usr.sbin/sa/Makefile
new file mode 100644
index 0000000..930f3ff
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+all: regress
+
+regress: regress.t
+ ./regress.t
diff --git a/tools/regression/usr.sbin/sa/prime.sh b/tools/regression/usr.sbin/sa/prime.sh
new file mode 100644
index 0000000..c3fec32
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/prime.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Configure and run this script to create the files for regression testing
+# for a new architecture/configuration.
+#
+# $FreeBSD$
+#
+
+# Set this to the path of the current sa command
+SANEW=/usr/sbin/sa
+
+# Set this to the path of the sa as of 2007-05-19.
+# You can obtain it with a command like:
+# cvs co -D '2007-05-19' sa
+# To compile it you will also need sys/acct.h from that date
+# and sa configured to use that file, instead of the current version.
+SAOLD=/$HOME/src/sa/sa
+
+# Machine architecture
+ARCH=`uname -m`
+
+# Location of lastcomm regression files
+LCDIR=../../usr.bin/lastcomm
+
+$SANEW -u $LCDIR/v1-$ARCH-acct.in >v1-$ARCH-u.out
+$SANEW -u $LCDIR/v2-$ARCH-acct.in >v2-$ARCH-u.out
+$SANEW -i $LCDIR/v1-$ARCH-acct.in >v1-$ARCH-sav.out
+$SANEW -im $LCDIR/v1-$ARCH-acct.in >v1-$ARCH-usr.out
+cp $LCDIR/v1-$ARCH-acct.in acct.in
+rm -f v1-$ARCH-sav.in v1-$ARCH-usr.in
+$SAOLD -s -P v1-$ARCH-sav.in -U v1-$ARCH-usr.in acct.in >/dev/null
+cp $LCDIR/v1-$ARCH-acct.in acct.in
+rm -f v2-$ARCH-sav.in v2-$ARCH-usr.in
+$SANEW -s -P v2-$ARCH-sav.in -U v2-$ARCH-usr.in acct.in >/dev/null
+rm acct.in
diff --git a/tools/regression/usr.sbin/sa/regress.t b/tools/regression/usr.sbin/sa/regress.t
new file mode 100644
index 0000000..2f64cf9
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/regress.t
@@ -0,0 +1,74 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+DIR=`dirname $0`
+LCDIR=`dirname $0`/../../usr.bin/lastcomm
+ARCH=`uname -m`
+
+check()
+{
+ NUM=$1
+ shift
+ if diff -q - $1
+ then
+ echo "ok $NUM"
+ else
+ echo "not ok $NUM"
+ fi
+}
+
+cp $LCDIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in
+cp $LCDIR/v2-$ARCH-acct.in $DIR/v2-$ARCH-acct.in
+
+echo 1..13
+
+# Command listings of the two acct versions
+sa -u $DIR/v1-$ARCH-acct.in | check 1 $DIR/v1-$ARCH-u.out
+sa -u $DIR/v2-$ARCH-acct.in | check 2 $DIR/v2-$ARCH-u.out
+
+# Plain summaries of user/process
+sa -i $DIR/v1-$ARCH-acct.in | check 3 $DIR/v1-$ARCH-sav.out
+sa -im $DIR/v1-$ARCH-acct.in | check 4 $DIR/v1-$ARCH-usr.out
+
+# Backward compatibility of v1 summary files
+sa -P $DIR/v1-$ARCH-sav.in -U $DIR/v1-$ARCH-usr.in /dev/null |
+ check 5 $DIR/v1-$ARCH-sav.out
+sa -m -P $DIR/v1-$ARCH-sav.in -U $DIR/v1-$ARCH-usr.in /dev/null |
+ check 6 $DIR/v1-$ARCH-usr.out
+
+# Convert old summary format to new
+cp $DIR/v1-$ARCH-sav.in $DIR/v2c-$ARCH-sav.in
+cp $DIR/v1-$ARCH-usr.in $DIR/v2c-$ARCH-usr.in
+sa -s -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null >/dev/null
+sa -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null |
+ check 7 $DIR/v1-$ARCH-sav.out
+sa -m -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null |
+ check 8 $DIR/v1-$ARCH-usr.out
+
+# Reading v2 summary files
+sa -P $DIR/v2-$ARCH-sav.in -U $DIR/v2-$ARCH-usr.in /dev/null |
+ check 9 $DIR/v1-$ARCH-sav.out
+sa -m -P $DIR/v2-$ARCH-sav.in -U $DIR/v2-$ARCH-usr.in /dev/null |
+ check 10 $DIR/v1-$ARCH-usr.out
+
+# Summarize
+sa -is -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in $DIR/v1-$ARCH-acct.in >/dev/null
+sa -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null |
+ check 11 $DIR/v1-$ARCH-sav.out
+sa -m -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in /dev/null |
+ check 12 $DIR/v1-$ARCH-usr.out
+
+# Accumulate
+cp $LCDIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in
+sa -is -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in $DIR/v1-$ARCH-acct.in >/dev/null
+cp $LCDIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in
+sa -s -P $DIR/v2c-$ARCH-sav.in -U $DIR/v2c-$ARCH-usr.in $DIR/v1-$ARCH-acct.in >$DIR/double
+cp $LCDIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in
+sa -i $DIR/v1-$ARCH-acct.in $DIR/v1-$ARCH-acct.in | check 13 $DIR/double
+
+# Clean up
+rm $DIR/double $DIR/v2c-$ARCH-usr.in $DIR/v2c-$ARCH-sav.in $DIR/v1-$ARCH-acct.in $DIR/v2-$ARCH-acct.in
+
+exit 0
diff --git a/tools/regression/usr.sbin/sa/v1-amd64-sav.in b/tools/regression/usr.sbin/sa/v1-amd64-sav.in
new file mode 100644
index 0000000..adc38dd
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-amd64-sav.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v1-amd64-sav.out b/tools/regression/usr.sbin/sa/v1-amd64-sav.out
new file mode 100644
index 0000000..5b3d184
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-amd64-sav.out
@@ -0,0 +1,5 @@
+ 28 0.282re 0.06cp 40avio 957k
+ 13 0.141re 0.06cp 87avio 903k ***other
+ 3 0.000re 0.00cp 0avio 0k ln
+ 9 0.141re 0.00cp 0avio 19700k time
+ 3 0.000re 0.00cp 0avio 0k time*
diff --git a/tools/regression/usr.sbin/sa/v1-amd64-u.out b/tools/regression/usr.sbin/sa/v1-amd64-u.out
new file mode 100644
index 0000000..8541425
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-amd64-u.out
@@ -0,0 +1,28 @@
+ 0 0.000 cpu 0k mem 0 io accton
+ 0 0.172 cpu 41k mem 0 io awk
+ 0 0.000 cpu 140k mem 0 io time
+ 0 3.031 cpu 45k mem 1 io egrep
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.250 cpu 42k mem 1087 io find
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.000 cpu 0k mem 0 io sleep
+ 0 0.000 cpu 57k mem 0 io time
+ 0 0.016 cpu 31k mem 16 io dd
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.203 cpu 1976k mem 0 io diff
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.000 cpu 0k mem 0 io ln
+ 0 0.000 cpu 0k mem 0 io time*
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.000 cpu 0k mem 0 io ln
+ 0 0.000 cpu 0k mem 0 io time*
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.000 cpu 0k mem 0 io ln
+ 0 0.000 cpu 0k mem 0 io time*
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.000 cpu 713k mem 0 io cc1
+ 0 0.000 cpu 0k mem 0 io as
+ 0 0.000 cpu 228k mem 1 io ld
+ 0 0.000 cpu 196k mem 9 io cc
+ 0 0.000 cpu 45k mem 7 io core
+ 0 0.000 cpu 0k mem 9 io core*
diff --git a/tools/regression/usr.sbin/sa/v1-amd64-usr.in b/tools/regression/usr.sbin/sa/v1-amd64-usr.in
new file mode 100644
index 0000000..6896d32
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-amd64-usr.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v1-amd64-usr.out b/tools/regression/usr.sbin/sa/v1-amd64-usr.out
new file mode 100644
index 0000000..b3a0a8a
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-amd64-usr.out
@@ -0,0 +1 @@
+root 28 0.06cpu 1130tio 3514k*sec
diff --git a/tools/regression/usr.sbin/sa/v1-i386-sav.in b/tools/regression/usr.sbin/sa/v1-i386-sav.in
new file mode 100644
index 0000000..4ed7aef
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-i386-sav.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v1-i386-sav.out b/tools/regression/usr.sbin/sa/v1-i386-sav.out
new file mode 100644
index 0000000..8b29949
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-i386-sav.out
@@ -0,0 +1,5 @@
+ 28 0.425re 0.10cp 143avio 477k
+ 14 0.220re 0.10cp 286avio 411k ***other
+ 2 0.000re 0.00cp 0avio 0k 1234567890123456
+ 3 0.000re 0.00cp 0avio 0k ln
+ 9 0.205re 0.00cp 0avio 40400k time
diff --git a/tools/regression/usr.sbin/sa/v1-i386-u.out b/tools/regression/usr.sbin/sa/v1-i386-u.out
new file mode 100644
index 0000000..75223bc
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-i386-u.out
@@ -0,0 +1,28 @@
+ 0 0.000 cpu 264k mem 0 io accton
+ 0 0.453 cpu 41k mem 0 io awk
+ 0 0.000 cpu 0k mem 0 io time
+ 0 4.984 cpu 41k mem 28 io egrep
+ 0 0.000 cpu 140k mem 0 io time
+ 0 0.266 cpu 36k mem 3921 io find
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.000 cpu 0k mem 0 io sleep
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.016 cpu 25k mem 16 io dd
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.312 cpu 1361k mem 0 io diff
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.000 cpu 0k mem 0 io ln
+ 0 0.000 cpu 0k mem 0 io 123456789012345
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.000 cpu 0k mem 0 io ln
+ 0 0.000 cpu 0k mem 0 io 1234567890123456
+ 0 0.000 cpu 264k mem 0 io time
+ 0 0.000 cpu 0k mem 0 io ln
+ 0 0.000 cpu 0k mem 0 io 1234567890123456
+ 0 0.000 cpu 0k mem 0 io time
+ 0 0.016 cpu 233k mem 1 io cc1
+ 0 0.000 cpu 482k mem 1 io as
+ 0 0.000 cpu 0k mem 11 io ld
+ 0 0.000 cpu 0k mem 6 io cc
+ 0 0.000 cpu 0k mem 12 io core
+ 0 0.000 cpu 0k mem 7 io core*
diff --git a/tools/regression/usr.sbin/sa/v1-i386-usr.in b/tools/regression/usr.sbin/sa/v1-i386-usr.in
new file mode 100644
index 0000000..791b6ed
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-i386-usr.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v1-i386-usr.out b/tools/regression/usr.sbin/sa/v1-i386-usr.out
new file mode 100644
index 0000000..ddbd370
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-i386-usr.out
@@ -0,0 +1 @@
+root 28 0.10cpu 4003tio 2887k*sec
diff --git a/tools/regression/usr.sbin/sa/v1-sparc64-sav.in b/tools/regression/usr.sbin/sa/v1-sparc64-sav.in
new file mode 100644
index 0000000..d6911cf
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-sparc64-sav.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v1-sparc64-sav.out b/tools/regression/usr.sbin/sa/v1-sparc64-sav.out
new file mode 100644
index 0000000..9d04ff8
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-sparc64-sav.out
@@ -0,0 +1,5 @@
+ 28 1.839re 0.66cp 161avio 252k
+ 14 0.930re 0.66cp 322avio 197k ***other
+ 9 0.908re 0.00cp 0avio 10190k time
+ 3 0.001re 0.00cp 0avio 16256k ln
+ 2 0.001re 0.00cp 0avio 27900k 1234567890123456
diff --git a/tools/regression/usr.sbin/sa/v1-sparc64-u.out b/tools/regression/usr.sbin/sa/v1-sparc64-u.out
new file mode 100644
index 0000000..78dd4db
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-sparc64-u.out
@@ -0,0 +1,28 @@
+ 0 0.016 cpu 162k mem 0 io accton
+ 0 1.609 cpu 273k mem 0 io awk
+ 0 0.016 cpu 174k mem 0 io time
+ 0 29.750 cpu 233k mem 26 io egrep
+ 0 0.016 cpu 161k mem 0 io time
+ 0 5.516 cpu 184k mem 4437 io find
+ 0 0.016 cpu 156k mem 0 io time
+ 0 0.000 cpu 136k mem 0 io sleep
+ 0 0.016 cpu 152k mem 0 io time
+ 0 0.562 cpu 161k mem 16 io dd
+ 0 0.016 cpu 156k mem 0 io time
+ 0 1.641 cpu 193k mem 0 io diff
+ 0 0.016 cpu 156k mem 0 io time
+ 0 0.000 cpu 169k mem 0 io ln
+ 0 0.000 cpu 144k mem 0 io 123456789012345
+ 0 0.016 cpu 166k mem 0 io time
+ 0 0.016 cpu 170k mem 0 io ln
+ 0 0.000 cpu 144k mem 0 io 1234567890123456
+ 0 0.016 cpu 156k mem 0 io time
+ 0 0.016 cpu 169k mem 0 io ln
+ 0 0.000 cpu 135k mem 0 io 1234567890123456
+ 0 0.016 cpu 156k mem 0 io time
+ 0 0.094 cpu 3462k mem 2 io cc1
+ 0 0.016 cpu 1047k mem 1 io as
+ 0 0.094 cpu 1118k mem 10 io ld
+ 0 0.016 cpu 361k mem 5 io cc
+ 0 0.031 cpu 165k mem 7 io core
+ 0 0.000 cpu 112k mem 4 io core*
diff --git a/tools/regression/usr.sbin/sa/v1-sparc64-usr.in b/tools/regression/usr.sbin/sa/v1-sparc64-usr.in
new file mode 100644
index 0000000..08d795b
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-sparc64-usr.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v1-sparc64-usr.out b/tools/regression/usr.sbin/sa/v1-sparc64-usr.out
new file mode 100644
index 0000000..fc777a3
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v1-sparc64-usr.out
@@ -0,0 +1 @@
+root 28 0.66cpu 4508tio 9971k*sec
diff --git a/tools/regression/usr.sbin/sa/v2-amd64-sav.in b/tools/regression/usr.sbin/sa/v2-amd64-sav.in
new file mode 100644
index 0000000..24f863b
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v2-amd64-sav.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v2-amd64-u.out b/tools/regression/usr.sbin/sa/v2-amd64-u.out
new file mode 100644
index 0000000..a118170
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v2-amd64-u.out
@@ -0,0 +1,28 @@
+ 0 0.002 cpu 68k mem 0 io accton
+ 0 0.163 cpu 35k mem 0 io awk
+ 0 0.003 cpu 0k mem 0 io time
+ 0 3.247 cpu 29k mem 26 io egrep
+ 0 0.003 cpu 93k mem 0 io time
+ 0 0.822 cpu 19k mem 4472 io find
+ 0 0.003 cpu 0k mem 0 io time
+ 0 0.002 cpu 0k mem 0 io sleep
+ 0 0.004 cpu 88k mem 0 io time
+ 0 0.076 cpu 18k mem 16 io dd
+ 0 0.003 cpu 0k mem 0 io time
+ 0 0.223 cpu 24k mem 0 io diff
+ 0 0.003 cpu 0k mem 0 io time
+ 0 0.003 cpu 0k mem 0 io ln
+ 0 0.002 cpu 0k mem 0 io 123456789012345
+ 0 0.003 cpu 0k mem 0 io time
+ 0 0.002 cpu 0k mem 0 io ln
+ 0 0.002 cpu 0k mem 0 io 1234567890123456
+ 0 0.003 cpu 0k mem 0 io time
+ 0 0.002 cpu 0k mem 0 io ln
+ 0 0.002 cpu 70k mem 0 io 1234567890123456
+ 0 0.003 cpu 0k mem 0 io time
+ 0 0.024 cpu 661k mem 2 io cc1
+ 0 0.005 cpu 0k mem 1 io as
+ 0 0.014 cpu 192k mem 9 io ld
+ 0 0.005 cpu 162k mem 5 io cc
+ 0 0.005 cpu 0k mem 13 io core
+ 0 0.002 cpu 0k mem 7 io core*
diff --git a/tools/regression/usr.sbin/sa/v2-amd64-usr.in b/tools/regression/usr.sbin/sa/v2-amd64-usr.in
new file mode 100644
index 0000000..4c3b136
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v2-amd64-usr.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v2-i386-sav.in b/tools/regression/usr.sbin/sa/v2-i386-sav.in
new file mode 100644
index 0000000..d3172db
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v2-i386-sav.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v2-i386-u.out b/tools/regression/usr.sbin/sa/v2-i386-u.out
new file mode 100644
index 0000000..454a228
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v2-i386-u.out
@@ -0,0 +1,28 @@
+ 0 0.001 cpu 0k mem 0 io accton
+ 0 0.448 cpu 112k mem 0 io awk
+ 0 0.001 cpu 0k mem 0 io time
+ 0 6.680 cpu 110k mem 0 io egrep
+ 0 0.001 cpu 0k mem 0 io time
+ 0 0.248 cpu 108k mem 0 io find
+ 0 0.001 cpu 0k mem 0 io time
+ 0 0.001 cpu 0k mem 0 io sleep
+ 0 0.001 cpu 0k mem 0 io time
+ 0 0.025 cpu 103k mem 16 io dd
+ 0 0.001 cpu 0k mem 0 io time
+ 0 0.423 cpu 110k mem 0 io diff
+ 0 0.001 cpu 0k mem 0 io time
+ 0 0.001 cpu 0k mem 0 io ln
+ 0 0.001 cpu 0k mem 0 io 123456789012345
+ 0 0.001 cpu 0k mem 0 io time
+ 0 0.001 cpu 0k mem 0 io ln
+ 0 0.001 cpu 0k mem 0 io 1234567890123456
+ 0 0.001 cpu 140k mem 0 io time
+ 0 0.001 cpu 0k mem 0 io ln
+ 0 0.001 cpu 0k mem 0 io 1234567890123456
+ 0 0.001 cpu 0k mem 0 io time
+ 0 0.016 cpu 620k mem 0 io cc1
+ 0 0.002 cpu 432k mem 0 io as
+ 0 0.028 cpu 96k mem 0 io ld
+ 0 0.002 cpu 0k mem 0 io cc
+ 0 0.002 cpu 68k mem 12 io core
+ 0 0.000 cpu 0k mem 7 io core*
diff --git a/tools/regression/usr.sbin/sa/v2-i386-usr.in b/tools/regression/usr.sbin/sa/v2-i386-usr.in
new file mode 100644
index 0000000..465fdb4
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v2-i386-usr.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v2-sparc64-sav.in b/tools/regression/usr.sbin/sa/v2-sparc64-sav.in
new file mode 100644
index 0000000..b6d836a
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v2-sparc64-sav.in
Binary files differ
diff --git a/tools/regression/usr.sbin/sa/v2-sparc64-u.out b/tools/regression/usr.sbin/sa/v2-sparc64-u.out
new file mode 100644
index 0000000..c02ec9c
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v2-sparc64-u.out
@@ -0,0 +1,36 @@
+ 0 0.019 cpu 163k mem 0 io accton
+ 0 1.644 cpu 272k mem 0 io awk
+ 0 0.029 cpu 175k mem 0 io time
+ 0 0.019 cpu 163k mem 0 io sleep
+ 0 0.032 cpu 214k mem 35 io fsck_ufs
+ 0 0.028 cpu 213k mem 10 io fsck_ufs
+ 0 0.028 cpu 189k mem 8 io fsck_ufs
+ 0 0.028 cpu 196k mem 7 io fsck_ufs
+ 0 0.055 cpu 168k mem 0 io fsck
+ 0 0.008 cpu 204k mem 0 io sh*
+ 0 0.023 cpu 179k mem 0 io logger
+ 0 26.715 cpu 233k mem 25 io egrep
+ 0 0.029 cpu 162k mem 0 io time
+ 0 5.703 cpu 184k mem 4444 io find
+ 0 0.029 cpu 166k mem 0 io time
+ 0 0.018 cpu 136k mem 0 io sleep
+ 0 0.028 cpu 157k mem 0 io time
+ 0 0.588 cpu 160k mem 16 io dd
+ 0 0.027 cpu 162k mem 0 io time
+ 0 1.636 cpu 193k mem 0 io diff
+ 0 0.029 cpu 172k mem 0 io time
+ 0 0.020 cpu 170k mem 0 io ln
+ 0 0.018 cpu 135k mem 0 io 123456789012345
+ 0 0.029 cpu 167k mem 0 io time
+ 0 0.019 cpu 163k mem 0 io ln
+ 0 0.017 cpu 135k mem 0 io 1234567890123456
+ 0 0.029 cpu 157k mem 0 io time
+ 0 0.019 cpu 163k mem 0 io ln
+ 0 0.017 cpu 135k mem 0 io 1234567890123456
+ 0 0.029 cpu 162k mem 0 io time
+ 0 0.105 cpu 3358k mem 2 io cc1
+ 0 0.030 cpu 996k mem 1 io as
+ 0 0.186 cpu 1114k mem 11 io ld
+ 0 0.033 cpu 386k mem 6 io cc
+ 0 0.037 cpu 158k mem 12 io core
+ 0 0.010 cpu 129k mem 7 io core*
diff --git a/tools/regression/usr.sbin/sa/v2-sparc64-usr.in b/tools/regression/usr.sbin/sa/v2-sparc64-usr.in
new file mode 100644
index 0000000..01a1bdc
--- /dev/null
+++ b/tools/regression/usr.sbin/sa/v2-sparc64-usr.in
Binary files differ
OpenPOWER on IntegriCloud